日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql长事务慢查询解决方案_MySQL : 如何监控和处理慢查询与长事务 ?

發布時間:2025/3/12 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql长事务慢查询解决方案_MySQL : 如何监控和处理慢查询与长事务 ? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是慢查詢、長事務 ?

慢查詢 是指一條 SQL 的執行時間太長。比如在一個有100w條數據的表中,查詢一條數據時未命中索引,從而通過全表掃描查詢數據,這個查詢會耗時很長。這就是一個 Long SQL 。類似,更新數據、刪除數據也可能出現慢查詢 。

長事務,是指事務開啟后長時間未結束(commit或者rollback都沒執行)。出現長事務的原因有很多,例如:

事務中有一個慢查詢;

就是忘記結束事務了;

一個長事務中鎖住了一些資源,導致其他需要該資源的事務也變成長事務。

很多情況下,慢查詢和長事務,會對業務產生很大的負面影響:

業務響應太慢。

連接數暴漲。

如何發現慢查詢 ?

方法1:

使用 show processlist?查看MySQL 線程情況,若有 Command 為 Query?,Time 很大的線程在列表中,那么這個線程就是在執行一個慢查詢。Info 字段能看出來對應的 SQL 。

select * from information_schema.processlist?效果和 show processlist?相同。

示例:

方法2:

開啟慢查詢日志,實時解析日志內容。

略。

如何處理不可接受的慢查詢?

如果慢查詢在意料之中,可接受,那么不用處理。否則應該:

干掉此次的慢查詢。使用 kill ?,id 是 show processlist?返回的 Id 。

優化SQL、索引等,防止再次出現慢查詢。

如何發現長事務?

查詢結果中,idle_time 過大的事務就是長事務。輸出結果中, trx_mysql_thread_id? 是對應的線程標識。

如何干掉長事務?

方案1

從 INFORMATION_SCHEMA.INNODB_TRX?得到的長事務信息中,有對應的線程標識, kill 掉即可。

方案2

設置較小的 wait_timeout?可以干掉部分長事務。

對于業務代碼,使用的是非交互模式的連接,可以使用 wait_timeout?設置超時時間。相當于,若某個連接在 wait_timeout?這個時間范圍內是空閑的,MySQL 服務器會自動關閉連接。

注意,數據庫連接池參數要根據情況調整下。

總結

以上是生活随笔為你收集整理的mysql长事务慢查询解决方案_MySQL : 如何监控和处理慢查询与长事务 ?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。