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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库中事务并发问题

發布時間:2025/3/20 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库中事务并发问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于同時運行的多個事務,當這些事務訪問數據庫中相同的數據時,
如果沒有采取必要的隔離機制。就會導致各種并發問題:

  • 臟讀: 對于兩個事務T1,T2, T1讀取了已經被T2更新但還沒有被提交的字段
    之后,若T2回滾,T1讀取的內容就是臨時且無效的。
  • 不可重復讀:對于兩個事務T1,T2,T1讀取了一個字段,然后T2更新了該字段之后,
    T1再次讀取同一個字段,值就不同了。
  • 幻讀:對于兩個事務T1,T2,T1從一個表中讀取了一個字段,
    然后T2在該表中插入了一些新的行之后,如果T1再次讀取同一個表,就會多出幾行。

數據庫事務的隔離性:

數據庫系統必須具有隔離并發運行各個事務的能力, 使它們不會互相影響,避免各種并發問題。

一個事務與其他事務隔離的程度稱為隔離級別。
數據庫規定了多種事務隔離級別,不同隔離級別對應不同的干擾程度,
隔離級別越高,數據一致性就越好,但并發性越弱。

隔離級別描述
READ UNCOMMITTED(讀未提交數據)允許事務讀取未被其他事務提交的變更。臟讀,不可重復讀和幻讀的問題都會出現
READ COMMITED(讀已提交數據)只允許事務讀取已經被其他事務提交的變更,可以避免臟讀,但不可重復讀和幻讀問題仍然存在
REPEATABLE READ(可重復讀)確保事務可以多次從一個字段中讀取相同的值,在這個事務持續期間,禁止其他事務對于這個字段進行更新,可以避免臟讀和不可重復讀,但幻讀的問題仍然存在
SERIALIZABLE(串行化)確保事務可以從一個表中讀取相同的行,在這個事務持續期間,禁止其他事務對該表執行插入,更新和刪除操作,所有并發問題都可以避免,但性能十分低下

Oracle 支持2種事務隔離級別: READ COMMITED , SERIALIZABLE。
Oracle默認的事務隔離級別為READ COMMITED。

Mysql支持4種事務隔離級別。Mysql默認的事務隔離級別為: REPEATABLE READ。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的数据库中事务并发问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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