程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 數據庫事務隔離級別

數據庫事務隔離級別

編輯:MySQL綜合教程

數據庫事務隔離級別


數據庫隔離級別:是在在數據庫操作中,為了有效保證並發讀取數據的正確性提出的。   隔離級別越高,越能保證數據的完整性和一致性,但是對並發性能的影響也越大。對於多數應用程序,可以優先考慮把數據庫系統的隔離級別設為Read Committed。它能夠避免髒讀取,而且具有較好的並發性能。盡管它會導致不可重復讀、幻讀和第二類丟失更新這些並發問題,在可能出現這類問題的個別場合,可以由應用程序采用悲觀鎖或樂觀鎖來控制。   數據庫的幾種隔離級別:   READ UNCOMMITTED(讀未提交數據):允許事務讀取未被其他事務提交的變更數據,會出現髒讀、不可重復讀和幻讀問題。   READ COMMITTED(讀已提交數據):只允許事務讀取已經被其他事務提交的變更數據,可避免髒讀,仍會出現不可重復讀和幻讀問題。   REPEATABLE READ(可重復讀):確保事務可以多次從一個字段中讀取相同的值,在此事務持續期間,禁止其他事務對此字段的更新,可以避免髒讀和不可重復讀,仍會出現幻讀問題。   SERIALIZABLE(序列化):確保事務可以從一個表中讀取相同的行,在這個事務持續期間,禁止其他事務對該表執行插入、更新和刪除操作,可避免所有並發問題,但性能非常低。   Oracle支持兩種事務隔離級別:   READ COMMITTED(默認事務隔離級別),SERIALIZABLE   MySQL支持四種事務隔離級別,其中REPEATABLE READ為默認事務隔離級別。   通過上面可以知道多事務同時運行,如果不采用以上四種隔離機制,可能會產生多個並發問題,其中包括髒讀、不可重復讀和幻讀,下面就解釋下這幾種並發問題:   存在兩個事物(T1,T2)同時運行   髒讀:T1讀取了已經被T2修改但還未提交的字段,由於某種原因,T2事物回滾,則T1讀取的內容是臨時且無效的。   不可重復讀:T1讀取一個字段,之後T2更新了該字段,T1在此讀取該字段值發生了變化。   幻讀:T1從一個表中讀取了一個字段,然後T2在該表中插入了一些新的行,之後T1在此讀取該表會多出幾行。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved