mysql查詢鎖表方式
mysql如何查詢鎖表
今天在做數(shù)據(jù)更新的時(shí)候,發(fā)現(xiàn)表中數(shù)據(jù)量不大,但是更新語句執(zhí)行很久都沒成功,經(jīng)過查詢后發(fā)現(xiàn)是表鎖死導(dǎo)致的,本文記錄一下鎖表解決步驟:
1.查看表是否被鎖
(1)直接在mysql命令行執(zhí)行:show engine innodb status。
(2)查看造成死鎖的sql語句,分析索引情況,然后優(yōu)化sql。
(3)然后show processlist,查看造成死鎖占用時(shí)間長(zhǎng)的sql語句。
(4)show status like '%lock%'。
2.查看表被鎖狀態(tài)和結(jié)束死鎖步驟
(1)查看表被鎖狀態(tài):
show OPEN TABLES where In_use > 0; 這個(gè)語句記錄當(dāng)前鎖表狀態(tài)
(2)查詢進(jìn)程:
- show processlist查詢表被鎖進(jìn)程
- 查詢到相應(yīng)進(jìn)程killid
(3)分析鎖表的SQL:
- 分析相應(yīng)SQL,給表加索引,
- 常用字段加索引,表關(guān)聯(lián)字段加索引
(4)查看正在鎖的事物:
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS
(5)查看等待鎖的事物:
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS
3.mysql查詢鎖表指令速查
(1)查看當(dāng)前鎖超時(shí)時(shí)間
show variables like 'innodb_lock_wait_timeout';
(2)查看全局鎖超時(shí)時(shí)間
SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout';
(3)更改當(dāng)前鎖超時(shí)時(shí)間為120秒
SET innodb_lock_wait_timeout=120;
(4)更改全局鎖超時(shí)時(shí)間為120秒
SET GLOBAL innodb_lock_wait_timeout=120;
(5)查看鎖情況
show full processlist;

(6)殺死鎖的命令
KILL 具體的id
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis-Plus查詢不到數(shù)據(jù)但使用SQL可以查詢到數(shù)據(jù)的問題排查解決
在使用MyBatis-Plus時(shí),有時(shí)會(huì)出現(xiàn)查詢不到數(shù)據(jù)的問題,而直接執(zhí)行SQL卻能查詢到數(shù)據(jù),本文將介紹如何排查和解決這一問題,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09
利用frm和ibd文件恢復(fù)mysql表數(shù)據(jù)的詳細(xì)過程
總是遇到mysql服務(wù)意外斷開之后導(dǎo)致mysql服務(wù)無法正常運(yùn)行的情況,使用Navicat工具查看能夠看到里面的庫和表,但是無法獲取數(shù)據(jù)記錄,提示數(shù)據(jù)表不存在,所以本文給大家介紹了利用frm和ibd文件恢復(fù)mysql表數(shù)據(jù)的詳細(xì)過程,需要的朋友可以參考下2024-04-04
有關(guān)mysql中sql的執(zhí)行順序的小問題
在MySQL中我們可能會(huì)遇到一些關(guān)于執(zhí)行順序的問題,下面小編就來帶大家了解一下原因以及如何解決2019-05-05
Mysql?8.4.0?結(jié)合?Docker?搭建GTID主從復(fù)制及傳統(tǒng)主從復(fù)制詳解
這篇文章主要介紹了Mysql?8.4.0?結(jié)合?Docker?搭建GTID主從復(fù)制,以及傳統(tǒng)主從復(fù)制,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-06-06

