mysql 行鎖公升級到表鎖示例

2021-10-08 14:44:19 字數 557 閱讀 7779

1.檢視儲存引擎 show engines;

2.資料結構

3.根據id(主鍵)更新同一條資料,a事務產生行鎖,b事務執行被阻塞,需要提交a事務後才能執行,如果長時間未提交事務,b事務會導致超時:error 1205 (hy000): lock wait timeout exceeded; try restarting transaction

4.根據非索引條件更新,a事務產生表鎖,b事務執行被阻塞。

總結:innodb的行鎖是針對索引加的鎖,不是針對記錄加的鎖。當更新條件沒有使用索引時,行鎖公升級為表鎖。

mysql行鎖表鎖區別 mysql表鎖和行鎖區別

一 表鎖 特點 偏向myisam儲存引擎,開銷小,加鎖快 無死鎖 鎖定粒度大,發生鎖衝突的概率最高,併發度最低。我們在編輯表,或者執行修改表的事情了語句的時候,一般都會給表加上表鎖,可以避免一些不同步的事情出現,表鎖分為兩種,一種是讀鎖,一種是寫鎖。我們可以手動給表加上這兩種鎖,語句是 lock t...

MySQL 表鎖 行鎖 間隙鎖

表鎖 表鎖有兩種模式 表共享讀鎖 表獨佔寫鎖 表共享讀鎖 讀鎖不會阻塞其他程序對同一表的讀操作,但阻塞寫操作,只有釋放鎖後其他程序才可以寫 表獨佔寫鎖 寫鎖會阻塞其他程序對同一表的讀和寫,只有寫鎖釋放後,其他程序才可以讀寫 簡而言之 讀鎖會阻塞寫,不阻塞讀 寫鎖阻塞讀和寫。行鎖 只鎖住某一行或多行的...

MySql型別轉換導致行鎖公升級為表鎖

在mysql的寫語句中,給表列賦值與表型別不符合時,mysql底層的優化器發揮作用,會做乙個強制型別轉化,此時能正常操作,但會導致行鎖公升級為表鎖。示例如下 以student表為例,表字段型別 表內容如下 開啟兩個session會話視窗,並把兩個會話視窗中的mysql的自動提交模式改為手動提交 在會...