MySQL事務和鎖

2021-10-24 12:37:48 字數 1346 閱讀 3128

acid 特性

在關係型資料庫管理系統中,乙個邏輯工作單元要成為事務,必須滿足這 4 個特性,即所謂的 acid:

原子性(atomicity)、一致性(consistency)、隔離性(isolation)和永續性(durability)。

mysql的永續性也與wal技術相關,redo log在系統crash重啟之類的情況時,可以修復資料,從而保障事務的永續性。通過原子性可以保證邏輯上的永續性,通過儲存引擎的資料刷盤可以保證物理上的永續性。

wal的全稱為write-ahead logging,先寫日誌,再寫磁碟。

併發事務

事務併發處理可能會帶來一些問題,比如:更新丟失、髒讀、不可重複讀、幻讀等。 排隊

最簡單的方法,就是完全順序執行所有事務的資料庫操作,不需要加鎖,簡單的說就是全域性排隊。序列化執行所有的事務單元,資料庫某個時刻只處理乙個事務操作,特點是強一致性,處理效能低。

排他鎖引入鎖之後就可以支援併發處理事務,如果事務之間涉及到相同的資料項時,會使用排他鎖,或叫互斥

鎖,先進入的事務獨佔資料項以後,其他事務被阻塞,等待前面的事務釋放鎖

在整個事務1結束之前,鎖是不會被釋放的,所以,事務2必須等到事務1結束之後開始

讀寫鎖讀和寫操作:讀讀、寫寫、讀寫、寫讀。

讀寫鎖就是進一步細化鎖的顆粒度,區分讀操作和寫操作,讓讀和讀之間不加鎖,這樣下面的兩個事務就可以同時被執行了

讀寫鎖,可以讓讀和讀並行,而讀和寫、寫和讀、寫和寫這幾種之間還是要加排他鎖

mvcc

多版本控制mvcc,也就是copy on write的思想。mvcc除了支援讀和讀並行,還支援讀和寫、寫和讀的並行,但為了保證一致性,寫和寫是無法並行的。

在事務1開始寫操作的時候會copy乙個記錄的副本,其他事務讀操作會讀取這個記錄副本,因此不會影

響其他事務對此記錄的讀取,實現寫和讀並行。

mysql 事務和鎖

事務是dbms得執行單位 開啟事務 set autocommit 0 取消自動提交 或begin 手動開啟乙個事務 提交乙個事務 commit 回滾乙個事務 rollback 在mysql的innodb 引擎中,預設每個操作 insert,update,select for update lock ...

MySQL 事務和鎖

和其他資料庫相比,mysql的鎖機制比較假單,不同的引擎支援不同的鎖機制。myisam和memory使用表級鎖,bdb使用頁面鎖和表級鎖 innodb預設支援行級鎖,也支援表級鎖。myisam表鎖有兩中,乙個是都鎖,乙個是寫鎖,相容性如下 模式讀鎖 寫鎖讀鎖 相容不相容 寫鎖不相容 不相容 可見my...

Mysql 事務和鎖

是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成為事務,必須滿足所謂...