一简介: 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 磁盘空间不足导致插入延迟等待
三 案例:
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 解决方案: 进行读写分离拆分,进一步进行观察