婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL因大事務導致的Insert慢實例分析

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

熱門標簽:外呼系統防封號違法嗎 高德地圖標注模式 電銷機器人針對的 寶應電信400電話辦理費用 外呼系統服務 400電話辦理都選易號網 高德地圖標注中心個人注冊 湘潭電銷機器人咨詢電話 如何在高德地圖標注新地址

【問題】

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

【初步分析】

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

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

【分析過程】

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

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

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

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

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

流程也可以理解如下,

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

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

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

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

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

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

【優化方案】

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

【其他變通方案】

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

3、 更換性能好的磁盤

總結

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

您可能感興趣的文章:
  • MySQL 8.0統計信息不準確的原因
  • MySQL如何快速導入數據
  • 5個MySQL GUI工具推薦,幫助你進行數據庫管理
  • Centos7 mysql數據庫安裝及配置實現教程
  • Python如何爬取51cto數據并存入MySQL
  • MYSQL SERVER收縮日志文件實現方法
  • MySQL為什么要避免大事務以及大事務解決的方法

標簽:南充 馬鞍山 黃山 宿遷 賀州 佛山 黔南 蘭州

巨人網絡通訊聲明:本文標題《MySQL因大事務導致的Insert慢實例分析》,本文關鍵詞  MySQL,因大,事務,導致,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL因大事務導致的Insert慢實例分析》相關的同類信息!
  • 本頁收集關于MySQL因大事務導致的Insert慢實例分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 十堰市| 永宁县| 玉山县| 东城区| 阿拉尔市| 麻江县| 靖边县| 米脂县| 东源县| 巴彦淖尔市| 连南| 滦平县| 邹城市| 交口县| 农安县| 安远县| 永靖县| 津市市| 大冶市| 和政县| 苍梧县| 阿尔山市| 虎林市| 樟树市| 兴仁县| 湟中县| 临夏市| 潞城市| 江华| 沙湾县| 临沧市| 山阳县| 古交市| 息烽县| 滨州市| 郧西县| 大名县| 肇源县| 怀集县| 璧山县| 鞍山市|