JAVA幾種對象的解釋
posted @ 2008-10-16 12:52 Sky Yi 閱讀(276) | 評論 (0) | 編輯 收藏
登高者必自卑,行遠者必自邇,在這個世界上,重要的不是你正站在那里,而是你正朝什么方向移動......
2008年10月8日 #
posted @ 2008-10-16 12:52 Sky Yi 閱讀(276) | 評論 (0) | 編輯 收藏
一、數據庫事務
二、事務的隔離級別 1、數據庫事務的隔離級別:四種
2、數據庫一般的默認隔離離級別是“讀已提交”,默認的事務隔離級別下:Insert,update ,delete下的是X鎖, 會等待事務完成。通常情況下可以把隔離級別設為Read Commited,它能避免臟讀,而且有較好的并發性能。盡管它會導致不可重復讀、虛讀和第二類更新丟失等問題,在可能出現這類問題的個別場合可以由應用程序釆用悲觀鎖或樂觀鎖來控制。
4、另外要提一點:SQL標準對事務隔離級別的規定,是按該級別不可能發生什么問題來確定的,不一定會發生這樣的問題;所以,不同的數據庫對事務隔離的級別約定不一樣,比如,有的數據庫把 可重復讀級別按可串行化來對待。(lkdlhw_2000個人理解:各個數據庫應該都遵循四種標準的事務隔離等級的定義,但是某些數據庫具體實現可能不存在四種,因為串行化可以避免不可重復讀,因此某些數據庫語法上支持設置事務隔離等級為不可重復讀,但實際上是串行化在起作用。也就是說只要該級別能夠避免不可重復讀的問題,就可以稱之為不可重復讀取級別。) 5、該隔離級別定義一個事務必須與其他事務所進行的資源或數據更改相隔離的程度。事務隔離級別控制: 三、鎖 1、分類:從數據庫系統的角度來看:分為獨占鎖(即排它鎖),共享鎖和更新鎖 2、事務使用鎖,防止其他用戶修改另外一個還沒有完成的事務中的數據。對于多用戶系統來說,鎖機制是必須的。SQL Server有多種鎖,允許事務鎖定不同的資源。鎖就是保護指定的資源,不被其他事務操作。SQL Server有多種鎖,允許事務鎖定不同的資源。鎖就是保護指定的資源,不被其他事務操作。為了最小化鎖的成本,SQL Server自動地以與任務相應等級的鎖來鎖定資源對象。鎖定比較小的對象,例如鎖定行,雖然可以提高并發性,但是卻有較高的開支,因為如果鎖定許多行,那么需要占有更多的鎖。鎖定比較大的對象,例如鎖定表,會大大降低并發性,因為鎖定整個表就限制了其他事務訪問該表的其他部分,但是成本開支比較低,因為只需維護比較少的鎖。 3、 鎖的特點: 4、鎖是定義到sql語句上的,對數據進行操作的sql就是:select,Insert,update ,delete。不同的事物隔離即被在執行sql的時候會向表上發送不同的鎖。 關于鎖的更多描述,可以去網上搜索一下。http://www.bitscn.com/windows/sql/200604/1068.html 四、多個用戶同時對數據庫的并發操作時會帶來以下數據不一致的問題: 臟讀dirty reads: 為了解決這些問題,數據庫引入了“鎖”的機制(從數據庫系統的角度來看:分為獨占鎖(即排它鎖),共享鎖和更新鎖,詳細內容不再描述)。
五、lkdlhw_2000個人理解(以下問題都是推測,還沒有證實): 隔離級別是由鎖來實現的,之所以出現事務的隔離級別相當于數據庫開發商根據一般的業務需求實現定義好的一組鎖使用的規則,便于我們時候,當我們將事務隔離級別定義到某一級上后如果不能滿足需求,我們還可以自行定義sql的鎖來覆蓋事務隔離級別默認的鎖機制? 鎖存在兩個問題:一個是鎖的粒度,一個是鎖的時間,鎖的時間應該包括兩種一種是sql執行完就釋放鎖,領一中是事務結束后釋放鎖 六、參考文章 http://www.es-ivision.com/Channel-4-10-108-0.html 七、事務隔離級別的例子 1. Read Uncommitted:最低等級的事務隔離,僅僅保證了讀取過程中不會讀取到非法數據。上訴4種不確定情況均有可能發生。 設置事務級別:SET TRANSACTION ISOLATION LEVEL 1、并發的影響:http://technet.microsoft.com/zh-cn/library/ms190805.aspx 該文章列出了并發引起的四種影響:丟失更新、臟讀(未提交的依賴關系)、不可重復讀(不一致的分析)、幻讀 2、并發控制類型:http://technet.microsoft.com/zh-cn/library/ms189132.aspx 當許多人試圖同時修改數據庫中的數據時,必須實現一個控制系統,使一個人所做的修改不會對他人所做的修改產生負面影響。這稱為并發控制。并發控制類型分為兩大類:樂觀并發控制和悲觀并發控制 3、數據庫引擎中的隔離級別:http://technet.microsoft.com/zh-cn/library/ms189122.aspx 1)講到了事務隔離級別控制的內容: 事務隔離級別控制: 讀取數據時是否占用鎖以及所請求的鎖類型。 占用讀取鎖的時間。 引用其他事務修改的行的讀取操作是否: 在該行上的排他鎖被釋放之前阻塞其他事務。 檢索在啟動語句或事務時存在的行的已提交版本。 讀取未提交的數據修改。 2)列出了事務的隔離級別: 未提交讀(隔離事務的最低級別,只能保證不讀取物理上損壞的數據) 已提交讀(數據庫引擎的默認級別) 可重復讀 可序列化(隔離事務的最高級別,事務之間完全隔離) 3)選擇事務隔離級別不影響為保護數據修改而獲取的鎖。事務總是在其修改的任何數據上獲取排他鎖并在事務完成之前持有該鎖,不管為該事務設置了什么樣的隔離級別。對于讀取操作,事務隔離級別主要定義保護級別,以防受到其他事務所做更改的影響。 4、SET TRANSACTION ISOLATION LEVEL (Transact-SQL) 設置事務隔離級別http://technet.microsoft.com/zh-cn/library/ms173763.aspx 該選項的作用與在事務內所有 SELECT 語句中的所有表上設置 HOLDLOCK 相同 5、總結: 通過以上幾篇文章基本上可以了解數據庫事務和鎖之間的關系。數據庫事務隔級別也是由鎖機制來最實現的。要想了解關于鎖的更深層析的內容還需要專門學習鎖的相關知識。 |
posted @ 2008-10-11 13:11 Sky Yi 閱讀(5561) | 評論 (1) | 編輯 收藏
posted @ 2008-10-08 14:36 Sky Yi 閱讀(709) | 評論 (0) | 編輯 收藏
建立jsp頁面
第一行引入了struts2的標簽庫,在之后的頁面中可以使用s標簽了。這行在幾乎所有的struts2應用的jsp頁面中都會出現
posted @ 2008-10-08 14:31 Sky Yi 閱讀(488) | 評論 (0) | 編輯 收藏
posted @ 2008-10-08 13:56 Sky Yi 閱讀(640) | 評論 (0) | 編輯 收藏