MySQL最佳入門 - MySQL的併發控制

目錄

 

MySQL事務處理

什麼是事務

事務的四大特性

原子性(Atomicity)

一致性(Consistent)

隔離性(Isolation)

持久性(Durable)

事務舉例

多事務執行方式

串行執行

特點

交叉併發執行

特點

同時併發執行

特點

併發執行導致的問題

什麼是數據不一致

丟失修改(lost update)

不可重複讀(non-repeatable read)

讀“髒數據”(dirty read)

併發控制


MySQL事務處理

什麼是事務

事務是由一組SQL語句組成的邏輯處理單元。

事務的四大特性

ACID

原子性(Atomicity)

事務是一個原子操作單元,其對數據的修改,要麼全部執行,要麼全都不執行。

一致性(Consistent)

在事務開始和完成時,數據都必須保持一致狀態。

隔離性(Isolation)

數據庫系統提供一定的隔離機制,保證事務在不受外部併發操作影響的“獨立”環境執行,這意味着事務處理過程中的中間狀態對外部是不可見的,反之亦然。

持久性(Durable)

事務完成之後,他對於數據的修改是永久性的,即使出現系統故障也能夠保持。

事務舉例

多事務執行方式

多請求多操作時應該如何處理:

串行執行

最簡單的處理方式,代表同一時間只有一個事務執行,如果有四件事,需要做一個隊列,誰先進隊列處理誰,一個一個來。

比如,開了一個窗口的銀行,然後取票排隊處理業務。

特點

  • 同一時間只有一個事務執行
  • 效率低,無法充分利用資源

交叉併發執行

比如:a客戶填表,b客戶可以處理業務。b客戶處理完,b去填表,a處理業務。

利用任務等待時間,交叉併發執行。

特點

  • 多事務交叉運行
  • 單處理器的併發方式

同時併發執行

比如:銀行開多個窗口,每個窗口都能處理客戶的業務,效率最高。

就像計算機多核,就可以處理多個運算。

特點

  • 多處理器系統中使用
  • 每個處理器處理一個事務

併發執行導致的問題

  • 併發勢必面臨“同讀同寫”問題;
  • “同讀同寫”導致破壞事務隔離性和數據不一致;

什麼是數據不一致

丟失修改(lost update)

丟失修改是指事務1與事務2從數據庫中讀入同一數據並修改。事務2的提交結果破壞了事務1提交的結果,導致事務1的修改被丟失;

不可重複讀(non-repeatable read)

不可重複讀是指事務1讀取數據後,事務2執行更新操作,使事務1無法再現前一次的讀取結果。

讀“髒數據”(dirty read)

讀“髒”數據是指事務1修改某一數據並寫回,然後事務2讀取該數據。事務1由於某種原因被撤銷,數據恢復原值。導致事務2讀取的數據爲錯誤數據,也就是“髒數據”。

併發控制

  • 對併發操作進行正確正確調度;
  • 保證事務的隔離性;
  • 保證數據的一致性;
發佈了177 篇原創文章 · 獲贊 130 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章