亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mysql排查鎖等待的解決方法

 更新時(shí)間:2024年08月02日 09:08:28   作者:qq_42524262  
最近線上碰到了幾次mysql鎖等待的問(wèn)題,本文主要介紹了mysql排查鎖等待的解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下

排查鎖等待步驟

最近線上碰到了幾次mysql鎖等待的問(wèn)題,一個(gè)事務(wù)線程長(zhǎng)期占用鎖資源,導(dǎo)致其他事務(wù)無(wú)法獲取到鎖,為了快速解決問(wèn)題,我們把線程kill掉了,但后面就定位不到具體的問(wèn)題了,這里我總結(jié)整理一下我的方案。

如果事務(wù)剛好還處于等待狀態(tài)

  • 使用以下查詢(xún)查看具體的鎖等待情況,包括哪個(gè)事務(wù)持有了鎖,哪個(gè)事務(wù)在等待哪個(gè)鎖:
SELECT * FROM sys.innodb_lock_waits;

這里可以看到當(dāng)前 鎖的類(lèi)型,等待鎖的事務(wù),等待時(shí)間

在這里插入圖片描述

同時(shí)我們可以看到等待的線程id,正在執(zhí)行的sql,但這個(gè)sql不全,我們可以拿這個(gè)線程id去
information_schema.PROCESSLIST 查到完整sql

在這里插入圖片描述

select * from information_schema.PROCESSLIST WHERE ID = 12;

這里我們還可以定位到執(zhí)行sql的host和端口

在這里插入圖片描述

但這些不是我們主要關(guān)注的,等待的事務(wù)超過(guò)時(shí)間會(huì)回滾,我們需要找到阻塞線程做了什么操作,還是回到第一步,找到阻塞線程id,但我們無(wú)法定位到具體sql,因?yàn)檫@里只會(huì)把正在執(zhí)行的sql查出來(lái),所以如何找到阻塞線程執(zhí)行過(guò)的sql成了關(guān)鍵。

在這里插入圖片描述

  • 找到阻塞線程執(zhí)行過(guò)的sql

第一種:

前提是要打開(kāi) performance_schema,可以用下面sql看一下

SHOW VARIABLES LIKE 'performance_schema';

但注意,如果是OFF,改成ON的話(huà)需要重啟實(shí)例,一般線上環(huán)境是不會(huì)這么操作,而且打開(kāi)后,因?yàn)橐嘤涗浺恍┤罩拘畔?,?huì)影響整體性能,也不推薦打開(kāi)。

用阿里云的RDS,修改參數(shù)時(shí)也會(huì)提示

在這里插入圖片描述

查找阻塞線程的詳細(xì)信息:

SELECT * FROM performance_schema.threads WHERE processlist_id = 11;

在這里插入圖片描述

查看引起阻塞的SQL語(yǔ)句:

SELECT * FROM performance_schema.events_statements_history WHERE thread_id = 51;

這樣我們就定位到了該線程執(zhí)行過(guò)的sql,再通過(guò)information_schema.PROCESSLIST 找到host和port,去我們具體的服務(wù)定位問(wèn)題。

在這里插入圖片描述

第二種方案:上面也提到performance_schema這個(gè)參數(shù)我們一般不會(huì)打開(kāi),所以我們只能通過(guò)事務(wù)id去binlog找了

1. 查詢(xún)binlog文件

首先,我們需要找到包含我們需要查詢(xún)的事務(wù)id的binlog文件。可以使用以下命令查看當(dāng)前正在生成的binlog文件

SHOW MASTER STATUS;

2.使用mysqlbinlog查找事務(wù)ID:接下來(lái),可以使用mysqlbinlog命令配合–start-position和–stop-position參數(shù),逐步定位到含有特定事務(wù)ID的binlog記錄。但是直接通過(guò)事務(wù)ID查找可能不直接支持,因?yàn)橥ǔJ聞?wù)ID并不直接暴露為查詢(xún)條件。一個(gè)更通用的方式是結(jié)合事務(wù)的時(shí)間戳或者其他上下文信息進(jìn)行搜索。

如果你確切知道某個(gè)事務(wù)大致發(fā)生的時(shí)間,可以利用時(shí)間篩選,例如:

mysqlbinlog --start-datetime="2024-07-31 14:00:00" mysql-bin.000001 | grep "事務(wù)相關(guān)的關(guān)鍵詞或ID"

3.將binlog解析后的SQL語(yǔ)句輸出到一個(gè)文本文件中

mysqlbinlog mysql-bin.000001 > output.sql
mysqlbinlog --base64-output=DECODE-ROWS --verbose mysql-bin.000001 > output.sql

這樣就可以從輸出文件中找到我們事務(wù)的信息了

鎖等待事務(wù)已經(jīng)回滾

這種時(shí)候只能看看現(xiàn)在RUNNING的線程,看看是否像我們這種情況有事務(wù)長(zhǎng)時(shí)間占用,通過(guò)事務(wù)id找到具體sql

SELECT * FROM information_schema.INNODB_TRX;

在這里插入圖片描述

到此這篇關(guān)于mysql排查鎖等待的解決方法的文章就介紹到這了,更多相關(guān)mysql排查鎖等待內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 盡量避免使用索引合并的場(chǎng)景問(wèn)題解析

    盡量避免使用索引合并的場(chǎng)景問(wèn)題解析

    這篇文章主要為大家介紹了盡量避免使用索引合并的場(chǎng)景問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • MySql安裝與配置方法(MySQL添加用戶(hù)、刪除用戶(hù)與授權(quán))

    MySql安裝與配置方法(MySQL添加用戶(hù)、刪除用戶(hù)與授權(quán))

    這篇文章主要介紹了MySql安裝與配置方法(MySQL添加用戶(hù)、刪除用戶(hù)與授權(quán))的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • MySQL拋出Incorrect string value異常分析

    MySQL拋出Incorrect string value異常分析

    從上至下統(tǒng)一用上UTF-8就高枕無(wú)憂(yōu),今天還是遇到字符的異常,本文將介紹解決方法
    2012-11-11
  • Mysql通過(guò)ibd文件恢復(fù)數(shù)據(jù)的詳細(xì)步驟

    Mysql通過(guò)ibd文件恢復(fù)數(shù)據(jù)的詳細(xì)步驟

    mysql在使用的過(guò)程中,難免遇到數(shù)據(jù)庫(kù)表誤操作,下面這篇文章主要給大家介紹了關(guān)于Mysql通過(guò)ibd文件恢復(fù)數(shù)據(jù)的詳細(xì)步驟,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • MySQL命令行中給表添加一個(gè)字段(字段名、是否為空、默認(rèn)值)

    MySQL命令行中給表添加一個(gè)字段(字段名、是否為空、默認(rèn)值)

    本文介紹MySQL數(shù)據(jù)庫(kù)使用SQL語(yǔ)句來(lái)在現(xiàn)有的表中,添加一個(gè)新的字段,包括設(shè)置字段的是否為空、默認(rèn)值等
    2016-04-04
  • mysql利用覆蓋索引避免回表優(yōu)化查詢(xún)

    mysql利用覆蓋索引避免回表優(yōu)化查詢(xún)

    這篇文章主要給大家介紹了關(guān)于mysql如何利用覆蓋索引避免回表優(yōu)化查詢(xún)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Ubuntu 14.04下安裝MySQL

    Ubuntu 14.04下安裝MySQL

    1、更新源列表打開(kāi)"終端窗口",輸入"sudo apt-getupdate"-->回車(chē)-->"輸入root用戶(hù)的密碼"-->回車(chē),就可以了。如果不運(yùn)行該命令,直接安裝mysql,會(huì)出現(xiàn)"有幾個(gè)軟件包無(wú)法下載,您可以運(yùn)行apt-getupdate------"的錯(cuò)誤提示,導(dǎo)致無(wú)法安裝。
    2016-04-04
  • 關(guān)于mysql 8.x 中insert ignore的性能問(wèn)題

    關(guān)于mysql 8.x 中insert ignore的性能問(wèn)題

    這篇文章主要介紹了關(guān)于mysql 8.x 中insert ignore的性能問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2022-08-08
  • Mysql基礎(chǔ)教程之增刪改查語(yǔ)句

    Mysql基礎(chǔ)教程之增刪改查語(yǔ)句

    這篇文章主要給大家介紹了關(guān)于Mysql基礎(chǔ)教程之增刪改查語(yǔ)句的相關(guān)資料,以下是MySQL最基本的增刪改查語(yǔ)句,很多IT工作者都必須要會(huì)的命令,也是IT行業(yè)面試最??嫉闹R(shí)點(diǎn),需要的朋友可以參考下
    2023-10-10
  • 淺談慢SQL優(yōu)化之索引的作用

    淺談慢SQL優(yōu)化之索引的作用

    本文針對(duì)?MySQL?數(shù)據(jù)庫(kù)的?InnoDB?存儲(chǔ)引擎,介紹其中索引的實(shí)現(xiàn)以及索引在慢?SQL?優(yōu)化中的作用,本文主要討論不同場(chǎng)景下索引生效與失效的原因,感興趣的小伙伴可以跟著小編一起來(lái)探討
    2023-05-05

最新評(píng)論