mysql mysql的事務和鎖

2021-08-28 20:11:01 字數 931 閱讀 1005

事務特性(acid):

mysql 中的事務

mysql事務使用

事務隔離性及在mysql中實踐

事務的四種隔離級別

隔離級別的檢視和修改

innodb是mysql預設的儲存引擎,預設的隔離級別是rr,並且在rr的隔離級別下更進一步,通過多版本併發控制(mvcc,multiversion concurrency control )解決不可重複讀問題,加上間隙鎖(也就是併發控制)解決幻讀問題。因此innodb的rr隔離級別其實實現了序列化級別的效果,而且保留了比較好的併發效能。

使用select…for update會把資料給鎖住,不過我們需要注意一些鎖的級別,mysql innodb預設row-level lock,所以只有「明確」地指定主鍵,mysql 才會執行row lock (只鎖住被選取的資料) ,否則mysql 將會執行table lock (將整個資料表單給鎖住)。

mysql中的鎖

mvvc(多版本併發控制)

事務的隔離性是通過鎖實現,而事務的原子性、一致性和永續性則是通過事務日誌實現。說到事務日誌,不得不說的就是redo和undo。

樂觀鎖

悲觀鎖

要使用悲觀鎖,我們必須關閉mysql資料庫的自動提交屬性,因為mysql預設使用autocommit模式,也就是說,當你執行乙個更新操作後,mysql會立刻將結果進行提交。set autocommit=0;

上面我們提到,使用select…for update會把資料給鎖住,不過我們需要注意一些鎖的級別,mysql innodb預設行級鎖。行級鎖都是基於索引的,如果一條sql語句用不到索引是不會使用行級鎖的,會使用表級鎖把整張表鎖住,這點需要注意。

排他鎖和共享鎖

myisam應用表鎖實現偽事務

死鎖的概念與避免

mysql 解除正在死鎖的狀態

如何盡可能避免死鎖

鎖 mysql Mysql的鎖(S鎖和X鎖的區別)

共享鎖和排它鎖 mysql的鎖系統 shared lock 和 exclusive lock 共享鎖和排它鎖,也叫讀鎖和寫鎖,即read lock和write lock 讀鎖是共享的,或者說是相互不阻塞的 寫鎖是排他的,乙個寫鎖會阻塞其他的寫鎖和讀鎖 在實際的資料庫系統中,每時每刻都發生鎖定,當某個...

MySQL mysql中的鎖機制

mysql的鎖機制不同的儲存引擎支援不同的鎖機制,分為表級鎖 行級鎖 頁面鎖。myisam和memory儲存引擎採用的是表級鎖 table level locking bdb儲存引擎採用的是頁面鎖 page level locking 但也支援表級鎖 innodb儲存引擎既支援行級鎖 row lev...

事務級別mysql mysql事務級別設定

一 全域性設定 1.全域性修改,修改mysql.ini配置檔案,在最後加上 可選引數有 read uncommitted,read committed,repeatable read,serializable.mysqld transaction isolation repeatable read ...