您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“MySQL查看鎖的代碼怎么寫”,內容詳細,步驟清晰,細節處理妥當,希望這篇“MySQL查看鎖的代碼怎么寫”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
查看數據庫狀態
# 會顯示加鎖的信息等等 show engine innodb status;
查看正在執行的線程信息
show full processlist;
查看正在鎖的表
show open tables where in_use > 0; show open tables;
查看鎖的類型、狀態
show status like '%lock%';
5.0后,增加了3個關于鎖的表
MySQL5.7版本
INFORMATION_SCHEMA.innodb_trx 當前運行的所有事務
INFORMATION_SCHEMA.innodb_locks 當前出現的鎖
INFORMATION_SCHEMA.innodb_lock_waits 鎖等待的對應關系
MySQL8.0版本
8.0后,performance_schema.data_locks代替了INFORMATION_SCHEMA.innodb_locks ,performance_schema.data_lock_waits代替了INFORMATION_SCHEMA.innodb_lock_waits
查看正在鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 5.7 SELECT * FROM performance_schema.data_locks; -- 8.0
查看等待鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; -- 5.7 SELECT * FROM performance_schema.data_lock_waits; -- 8.0
查看行鎖情況
show status like 'InnoDB_row_lock%';
查看表鎖情況
show status like 'table%';
開啟監控后,可以看到鎖的具體信息以及加鎖順序等,更容易分析死鎖。
方式一:創建監控表,監控某個數據庫
開啟:
CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB;
關閉:
DROP TABLE innodb_lock_monitor;
注意:在未擁有設置全局屬性權限下也可以開啟該功能。
方式二,開啟全局監控
開啟:
set GLOBAL innodb_status_output=ON; set GLOBAL innodb_status_output_locks=ON;
關閉:
set GLOBAL innodb_status_output=OFF; set GLOBAL innodb_status_output_locks=OFF;
查看數據庫狀態
show engine innodb status \G;
標準監控(Standard InnoDB Monitor):監視活動事務持有的表鎖、行鎖;事務鎖等待;線程信號量等待;文件IO請求;buffer pool統計信息;InnoDB主線程purge和change buffer merge活動。
# 方式一 CREATE TABLE innodb_monitor (a INT) ENGINE=INNODB; DROP TABLE innodb_monitor; # 方式二 set GLOBAL innodb_status_output=ON; set GLOBAL innodb_status_output=OFF;
鎖監控(InnoDB Lock Monitor):提供額外的鎖信息。
# 方式一 CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB; DROP TABLE innodb_lock_monitor; # 方式二 set GLOBAL innodb_status_output=ON; set GLOBAL innodb_status_output_locks=ON; set GLOBAL innodb_status_output=OFF; set GLOBAL innodb_status_output_locks=OFF;
表空間監控(InnoDB Tablespace Monitor):顯示共享表空間中的文件段以及表空間數據結構配置驗證。
CREATE TABLE innodb_tablespace_monitor (a INT) ENGINE=INNODB; DROP TABLE innodb_tablespace_monitor;
表監控(InnoDB Table Monitor):顯示內部數據字典的內容。
CREATE TABLE innodb_tablespace_monitor (a INT) ENGINE=INNODB; DROP TABLE innodb_tablespace_monitor;
讀到這里,這篇“MySQL查看鎖的代碼怎么寫”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。