一簡介: insert出現慢日志中,應該怎么檢測呢
二 理解:事務提交延遲,一般出現在寫日志延遲的情況下,會有幾種可能
場景:
1 RR模式下,insert等待gap lock鎖導致的
2 insert等待MDL鎖導致
3 表存在外鍵約束,耗時在外鍵檢測上
4 表沒有主鍵
5 表中含有blob/text和大varchar這種大字段
6 半同步復制的延遲導致插入延遲等待
7 DB服務器IO壓力較大,導致排隊,iowait很高
1 並發insert的線程較多
2 並發select的線程較多
8 磁盤空間不足導致插入延遲等待
9 優化task慢sql,因為慢sql同樣會搶占你的IO/CPU資源
三 案例:
1 描述:線上慢日志定期會出現insert慢日志,大概1s左右,非常奇怪
2 排查思路:
1 慢日志除了insert語句,並沒有大表掃描的慢查詢->排查慢查詢的干擾
2 觀察binlog生成量,非常少,嘗試調整sync_binlog參數,並沒效果->排查binlog刷新的干擾
3 嘗試調整innodb_flush_commit參數,並沒有效果->排查redo刷新的干擾
4 查看innodb_buffer_pool的命中率,查看臟頁刷新頻率效果
5 觀察慢日志insert發生時間,大多發生在整點和半點,查看對應的qps圖,發現對應的select並發非常高,找到了原因
3 解決方案: 進行讀寫分離拆分,進一步進行觀察