mysql中有以下幾類鎖:
共享鎖/排他鎖
意向鎖,該鎖是表級別的
記錄鎖
Gap 鎖
Next-Key鎖
自增鎖
地理索引的Predicate鎖。
mysql 中有幾張系統表是關于鎖信息的:
INFORMATION_SCHEMA.INNODB_TRX:記錄了所有在INNODB引擎上執行的事務信息。 INFORMATION_SCHEMA.INNODB_LOCKS:記錄了每個事務上的鎖的信息。 INFORMATION_SCHEMA.INNODB_LOCK_WAITS:記錄了哪些事務在等待鎖,以及等待鎖的信息。
查看鎖是否存在,以及相關信息:
SELECT
r.trx_id waiting_trx_id,
r.trx_mysql_thread_id waiting_thread,
r.trx_query waiting_query,
b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread,
b.trx_query blocking_query
FROM information_schema.innodb_lock_waits w
INNER JOIN information_schema.innodb_trx b
ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.innodb_trx r
ON r.trx_id = w.requesting_trx_id;