麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

MySQL因大事務導致的Insert慢實例分析

2024-07-25 19:09:11
字體:
來源:轉載
供稿:網友

【問題】

INSERT語句是最常見的SQL語句之一,最近有臺MySQL服務器不定時的會出現并發線程的告警,從記錄信息來看,有大量insert的慢查詢,執行幾十秒,等待flushing log,狀態query end

MySQL,大事務,Insert

【初步分析】

從等待資源來看,大部分時間消耗在了innodb_log_file階段,懷疑可能是磁盤問題導致,經過排查沒有發現服務器本身存在硬件問題

MySQL,大事務,Insert

后面開啟線程上升時pstack的自動采集,定位MySQL線程等待的位置。

【分析過程】

部署了pstack的自動抓取后,出現過6次thread concurrency >=50的告警(每次告警時會有大量的慢查詢產生),有3次抓到了現場。

并發線程升高時,有50多個線程卡在Stage_manager::enroll_for函數,處于group commit階段

MySQL,大事務,Insert

MySQL,大事務,Insert

線程0x519c5940對應的SQL語句如下,已經執行18秒

MySQL,大事務,Insert

Stage_manager::enroll_for函數的作用實現了多個線程在flush_stage階段的排隊。簡單來說,對于一個分組的事務,是被leader線程去提交的,其他線程處于排隊等待狀態,等待leader線程將該線程的事務提交完成。

如果第一個線程執行慢,后面的線程都處于等待狀態,整組事務無法提交。

MySQL,大事務,Insert

流程也可以理解如下,

Session A COMMIT-->拿到鎖-->進行binlog寫-->commit完成

Session B COMMIT-->等待鎖--------------------------->拿到鎖-->進行binlog寫-->commit完成

第一個線程為什么執行很慢,分析了發生告警時間段的日志文件,發現日志中存在2個15M和20M的大事務

MySQL,大事務,Insert

查看日志明細,存在delete from的大事務刪除語句,約包含23W條記錄,ROW模式下刪除23W條記錄,會產生大約20M的日志文件,刷盤時間較長,阻塞了同一個分組下其他事務的提交。

MySQL,大事務,Insert

事務的開始時間與告警時間吻合

積壓的分組下事務集中刷盤,反應到磁盤指標上可以看到在問題時間段的disk_write_kbytes指標出現明顯的上升

MySQL,大事務,Insert

【優化方案】

1、 建議開發避免使用delete from 整表的大事務刪除語句

【其他變通方案】

2、 Binlog 記錄的ROW模式下會產生大量的日志,改為MIXED模式,理論上也可以解決問題

3、 更換性能好的磁盤

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色综合视频 | 国产午夜精品一区二区三区免费 | 国产精品一区二区三区在线 | 美女wc| 91在线免费观看 | 红杏亚洲影院一区二区三区 | 精品久久久一 | 亚洲欧美国产高清va在线播放 | wwwxxx国产 | 鲁丝片一区二区三区免费入口 | 亚洲自拍第二页 | 日本精品一二区 | 午夜天堂在线视频 | 爱性久久久久久久 | 日韩视频―中文字幕 | 国产精品区一区二区三区 | 免费观看的毛片手机视频 | 久久亚洲视频网 | 嫩呦国产一区二区三区av | 日韩.www| 看国产毛片 | 成人店女老板视频在线看 | 1级片在线观看 | 久久精品中文字幕一区 | 国产精品久久久久久久娇妻 | 电影一级毛片 | 久久久久久亚洲综合影院红桃 | av电影网站在线观看 | 欧美日韩成人一区二区 | 久久久www视频 | 伊人午夜视频 | 国产免费一区二区三区视频 | av影院在线播放 | 精品一区二区三区电影 | 成人在线视频在线观看 | 99热99精品 | 91久久在线观看 | 国产一国产一级毛片视频 | 亚洲最新黄色网址 | 欧美一级高潮片免费的 | 亚洲一区二区不卡视频 |