日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

事物隔离级别(一)

發布時間:2024/10/12 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 事物隔离级别(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

四種事物隔離級別由低到高分別可以避免臟讀、不可重復讀和幻讀。但是隨著事物隔離級別的提高,系統開銷也會不斷提升。MySQL默認的事物隔離級別是第三級(Repeatable read)也是最常用的級別。

事物隔離級別
?臟讀 ? ? ? ? ? ? ? ? ? ? ? ??不可重復讀 ? ? ? ? ? ? ? ? ??幻讀 ? ? ? ? ? ? ? ? ? ??
Read uncommitted
Read committed?
Repeatable read(默認)??
Serializable???

?

?

?

?

?

?

?

一、Read uncommitted

處在Read uncommitted級別的事物能夠被其他事物讀取語句間的數據,因此會出現其它事物讀取了還未提交的數據。如果當前事物不發生回滾,則不會產生問題。效率最高,但不推薦。

二、Read committed

當前事物隔離級別,其它事物無法讀取到已經被修改但是還未被提交的數據。但是其它事物線程也不會被阻塞,這意味著如果存在并發事物嘗試讀取當前正在被修改的數據行時可能會讀取到原始數據。要避免這樣的問題需要當有事物正在修改行級數據的時候,其它事物無論讀或者寫都必須被阻塞。

上表兩次發出的select A from語句都是對同一行數據的查詢。由于兩條事物相互隔離,因此不會讀到另一條線程中的操作數。但是依然可以讀取當前行的原始數據,因此會造成兩次讀取的結果不一致。

三、Repeatable read(默認)

Repeatable read級別是MySQL默認的隔離級別,除非使用者明確修改。當前級別下的事物會同時為當前行增加讀寫的行級鎖或頁級鎖,操作完畢以后隨即unlock tables;如果在并發的事物中存在讀取當前行數據的行為時,事物將被阻塞。直到獲取行級鎖的時候才能夠繼續操作并同時阻塞別的線程。

在當前隔離級別下,大部分的數據操作都是安全的。唯一可能發生問題的情況是事物需要插入數據或刪除數據的時候,由于行級鎖并未對表鎖定。因此對于數據表的遍歷可能會發生幻讀錯誤。解決幻讀問題的關鍵事物對任何數據表的操作,同時使用表級鎖。其它任何并發事物都必須等待當前操作完成。從宏觀上觀察,就是杜絕了事物的并發操作。

四、Serializable

序列化事物是最高的事物隔離級別,也是最占用系統資源的操作。可以避免所有問題,但也不被推薦。

結語:

有一點需要在這里說明,以上對于數據庫隔離級別的闡釋主要是基于MySQL中的InnoDB引擎。甚至從JavaEE程序員的角度也可以這樣理解。但是,事務隔離級別和各種數據庫鎖機制并不是一一對應的關系。對DBA來說,無論是實現還是理解往往更加復雜。更深入一些的知識,我打算在下一篇博客中更新...(不過也可能不更新,大家不用期待)

安利時間:最近一直在找工作,有合適的機會請推薦一下^_^

轉載于:https://www.cnblogs.com/learnhow/p/5234461.html

總結

以上是生活随笔為你收集整理的事物隔离级别(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。