Mysql

當我在表被鎖定的情況下嘗試將數據插入 mysql 時會發生什麼?

  • May 12, 2021

簡單的問題,但不知何故無法找到明確的答案:

當我在表被鎖定的情況下嘗試將數據插入 mysql 時會發生什麼?

  1. INSERT 查詢失敗

  2. INSERT 查詢等待直到鎖被釋放

  3. 別的東西

“正常”結果是 INSERT 查詢等到鎖被釋放。但是有一些限制和特殊情況(你寫了關於鎖定 TABLES 所以 MyISAM 或顯式LOCK TABLES語句)

但是現在你應該主要使用 InnoDB 引擎和事務。在這種情況下,通常不使用顯式表鎖。仍然可以有元數據鎖。但是根據手冊InnoDB 不會將行鎖升級為表鎖,而是根據https://www.percona.com/blog/2010/06/08/table-locks-in-show-innodb-使用多粒度鎖定狀態/

使用行鎖,許多操作可以並行執行,並且只有在插入應該將插入行放入的間隙上存在間隙鎖時,插入才應該等待。

引用自:https://dba.stackexchange.com/questions/116261