事務特性(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 ...