MySQL查看鎖的實(shí)現(xiàn)代碼
MySQL查看鎖的sql
查看數(shù)據(jù)庫(kù)狀態(tài)
# 會(huì)顯示加鎖的信息等等 show engine innodb status;
查看正在執(zhí)行的線程信息
show full processlist;
查看正在鎖的表
show open tables where in_use > 0; show open tables;
查看鎖的類型、狀態(tài)
show status like '%lock%';
5.0后,增加了3個(gè)關(guān)于鎖的表
MySQL5.7版本
- INFORMATION_SCHEMA.innodb_trx 當(dāng)前運(yùn)行的所有事務(wù)
- INFORMATION_SCHEMA.innodb_locks 當(dāng)前出現(xiàn)的鎖
- INFORMATION_SCHEMA.innodb_lock_waits 鎖等待的對(duì)應(yīng)關(guān)系
MySQL8.0版本
8.0后,performance_schema.data_locks代替了INFORMATION_SCHEMA.innodb_locks ,performance_schema.data_lock_waits代替了INFORMATION_SCHEMA.innodb_lock_waits
查看正在鎖的事務(wù)
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 5.7 SELECT * FROM performance_schema.data_locks; -- 8.0
查看等待鎖的事務(wù)
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%';
開啟鎖監(jiān)控
開啟監(jiān)控后,可以看到鎖的具體信息以及加鎖順序等,更容易分析死鎖。
方式一:創(chuàng)建監(jiān)控表,監(jiān)控某個(gè)數(shù)據(jù)庫(kù)
開啟:
CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB;
關(guān)閉:
DROP TABLE innodb_lock_monitor;
注意:在未擁有設(shè)置全局屬性權(quán)限下也可以開啟該功能。
方式二,開啟全局監(jiān)控
開啟:
set GLOBAL innodb_status_output=ON; set GLOBAL innodb_status_output_locks=ON;
關(guān)閉:
set GLOBAL innodb_status_output=OFF; set GLOBAL innodb_status_output_locks=OFF;
查看數(shù)據(jù)庫(kù)狀態(tài)
show engine innodb status \G;
其他監(jiān)控
標(biāo)準(zhǔn)監(jiān)控(Standard InnoDB Monitor):監(jiān)視活動(dòng)事務(wù)持有的表鎖、行鎖;事務(wù)鎖等待;線程信號(hào)量等待;文件IO請(qǐng)求;buffer pool統(tǒng)計(jì)信息;InnoDB主線程purge和change buffer merge活動(dòng)。
# 方式一 CREATE TABLE innodb_monitor (a INT) ENGINE=INNODB; DROP TABLE innodb_monitor; # 方式二 set GLOBAL innodb_status_output=ON; set GLOBAL innodb_status_output=OFF;
鎖監(jiān)控(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;
表空間監(jiān)控(InnoDB Tablespace Monitor):顯示共享表空間中的文件段以及表空間數(shù)據(jù)結(jié)構(gòu)配置驗(yàn)證。
CREATE TABLE innodb_tablespace_monitor (a INT) ENGINE=INNODB; DROP TABLE innodb_tablespace_monitor;
表監(jiān)控(InnoDB Table Monitor):顯示內(nèi)部數(shù)據(jù)字典的內(nèi)容。
CREATE TABLE innodb_tablespace_monitor (a INT) ENGINE=INNODB; DROP TABLE innodb_tablespace_monitor;
到此這篇關(guān)于MySQL查看鎖的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)MySQL查看鎖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql 數(shù)據(jù)庫(kù)常用備份方法和注意事項(xiàng)
Mysql 數(shù)據(jù)庫(kù)常用備份方法和注意事項(xiàng) ,需要的朋友可以參考下。2010-04-04Mysql 導(dǎo)入導(dǎo)出csv 中文亂碼問題的解決方法
這篇文章介紹了Mysql 導(dǎo)入導(dǎo)出csv 中文亂碼問題的解決方法,有需要的朋友可以參考一下2013-09-09在Centos7環(huán)境安裝MySQL超詳細(xì)教程
MySQL是一種開源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),它是目前最流行和廣泛使用的數(shù)據(jù)庫(kù)之一,這篇文章主要給大家介紹了關(guān)于在Centos7環(huán)境安裝MySQL的相關(guān)資料,需要的朋友可以參考下2023-11-11MySQL觸發(fā)器實(shí)現(xiàn)兩表數(shù)據(jù)同步的代碼詳解
在數(shù)據(jù)庫(kù)應(yīng)用中,我們經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行某些操作,并在操作完成后進(jìn)行相應(yīng)的處理,這時(shí)候,可以使用觸發(fā)器來實(shí)現(xiàn)這些功能,MySQL提供了強(qiáng)大的觸發(fā)器功能,本文將給大家詳細(xì)介紹MySQL觸發(fā)器實(shí)現(xiàn)兩表數(shù)據(jù)同步,需要的朋友可以參考下2023-12-12mysql中自增auto_increment功能的相關(guān)設(shè)置及問題
mysql中的自增auto_increment功能相信每位phper都用過,本文就為大家分享一下mysql字段自增功能的具體查看及設(shè)置方法2012-12-12