最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql排查鎖等待的解決方法

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

排查鎖等待步驟

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

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

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

這里可以看到當(dāng)前 鎖的類型,等待鎖的事務(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ù)超過時(shí)間會(huì)回滾,我們需要找到阻塞線程做了什么操作,還是回到第一步,找到阻塞線程id,但我們無法定位到具體sql,因?yàn)檫@里只會(huì)把正在執(zhí)行的sql查出來,所以如何找到阻塞線程執(zhí)行過的sql成了關(guān)鍵。

在這里插入圖片描述

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

第一種:

前提是要打開 performance_schema,可以用下面sql看一下

SHOW VARIABLES LIKE 'performance_schema';

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

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

在這里插入圖片描述

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

SELECT * FROM performance_schema.threads WHERE processlist_id = 11;

在這里插入圖片描述

查看引起阻塞的SQL語句:

SELECT * FROM performance_schema.events_statements_history WHERE thread_id = 51;

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

在這里插入圖片描述

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

1. 查詢binlog文件

首先,我們需要找到包含我們需要查詢的事務(wù)id的binlog文件??梢允褂靡韵旅畈榭串?dāng)前正在生成的binlog文件

SHOW MASTER STATUS;

2.使用mysqlbinlog查找事務(wù)ID:接下來,可以使用mysqlbinlog命令配合–start-position和–stop-position參數(shù),逐步定位到含有特定事務(wù)ID的binlog記錄。但是直接通過事務(wù)ID查找可能不直接支持,因?yàn)橥ǔJ聞?wù)ID并不直接暴露為查詢條件。一個(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語句輸出到一個(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í)間占用,通過事務(wù)id找到具體sql

SELECT * FROM information_schema.INNODB_TRX;

在這里插入圖片描述

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

相關(guān)文章

  • mysql索引覆蓋實(shí)例分析

    mysql索引覆蓋實(shí)例分析

    這篇文章主要介紹了mysql索引覆蓋,簡(jiǎn)單說明了索引覆蓋的概念,并結(jié)合實(shí)例形式分析了mysql索引覆蓋的相關(guān)應(yīng)用與操作注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • MySql中的常用參數(shù)查詢

    MySql中的常用參數(shù)查詢

    這篇文章主要介紹了MySql中的常用參數(shù)查詢,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 詳解Mysql導(dǎo)出數(shù)據(jù)的幾種方式

    詳解Mysql導(dǎo)出數(shù)據(jù)的幾種方式

    MySQL導(dǎo)出數(shù)據(jù)的目的有很多種,如數(shù)據(jù)庫備份、表結(jié)構(gòu)導(dǎo)出、表數(shù)據(jù)導(dǎo)出、分析數(shù)據(jù)采取等,本文詳細(xì)的介紹了兩種Mysql導(dǎo)出數(shù)據(jù)的方法,感興趣的小伙伴可以了解一下
    2018-10-10
  • 簡(jiǎn)單了解mysql InnoDB MyISAM相關(guān)區(qū)別

    簡(jiǎn)單了解mysql InnoDB MyISAM相關(guān)區(qū)別

    這篇文章主要介紹了簡(jiǎn)單了解mysql InnoDB MyISAM相關(guān)區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • mysql?8.0.28?winx64.zip安裝配置方法圖文教程

    mysql?8.0.28?winx64.zip安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql?8.0.28?winx64.zip安裝配置方法圖文教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • MySQL8.0升級(jí)的踩坑歷險(xiǎn)記

    MySQL8.0升級(jí)的踩坑歷險(xiǎn)記

    聽說mysql8的性能提升了很多,對(duì)于我這種喜歡把所有軟件升級(jí)到最新版的人來說,二話不說直接升級(jí),這篇文章主要給大家介紹了關(guān)于MySQL8.0升級(jí)踩坑的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 利用MySQL空間函數(shù)實(shí)現(xiàn)位置打卡的完整步驟

    利用MySQL空間函數(shù)實(shí)現(xiàn)位置打卡的完整步驟

    這篇文章主要給大家介紹了關(guān)于如何利用MySQL空間函數(shù)實(shí)現(xiàn)位置打卡的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • MySQL動(dòng)態(tài)創(chuàng)建表,數(shù)據(jù)分表的存儲(chǔ)過程

    MySQL動(dòng)態(tài)創(chuàng)建表,數(shù)據(jù)分表的存儲(chǔ)過程

    MySQL動(dòng)態(tài)創(chuàng)建表,數(shù)據(jù)分表的存儲(chǔ)過程,需要的朋友可以參考下。
    2011-08-08
  • mysql binlog(二進(jìn)制日志)查看方法

    mysql binlog(二進(jìn)制日志)查看方法

    在本篇文章里小編給大家分享了關(guān)于mysql binlog(二進(jìn)制日志)查看方法,有需要的朋友們學(xué)習(xí)下。
    2019-01-01
  • linux下備份MYSQL數(shù)據(jù)庫的方法

    linux下備份MYSQL數(shù)據(jù)庫的方法

    這是一個(gè)眾所周知的事實(shí),對(duì)你運(yùn)行中的網(wǎng)站的MySQL數(shù)據(jù)庫備份是極為重要的。
    2010-02-02

最新評(píng)論

金乡县| 普兰店市| 镇安县| 进贤县| 分宜县| 榕江县| 信丰县| 同心县| 濮阳县| 甘洛县| 辽源市| 神农架林区| 平利县| 华容县| 女性| 衡南县| 元阳县| 衡东县| 盖州市| 长岛县| 湖口县| 江油市| 杨浦区| 新化县| 防城港市| 偏关县| 赤壁市| 昭觉县| 定远县| 遂川县| 云林县| 洛阳市| 婺源县| 廊坊市| 沧源| 同仁县| 岱山县| 南雄市| 和龙市| 旬邑县| 乐安县|