一个小问题,5.7版本,关于这个问题还有一种可能如下
https://www.jianshu.com/p/ee7a501b7f75
但是本例不是,这里是MySQLD进程的SQL线程耗用CPU较多,还是第一次遇到这样的问题。以前一般不会慢在这里。
一、问题由来
mysqlbinlog|mysql发现比较慢出现的perf top和栈如下:
image.png image.png image.png
二、原因
这里实际上是表没有主键使用hash scan 照成的,但是慢在hash key分配内存上,我们很容易模拟出这种问题的栈:
image.png
问题确认后就在表中增加主键即可。
三、其他思考
比如log_slave_updates/过滤等参数对于mysqlbinlog|mysql是否生效呢?
- log_slave_updates 是从库特有,主要用于处理SQL线程的属性
- replicate_do_ 是 Relay_log_info中的属性,属于channel属性,mysqlbinlog|mysql通道信息为临时建立的""
- binlog_do_是实例级别的属性,这个对每个线程都有效
mysqlbinlog|mysql 不会受到1、2的影响,但是受到3的影响。当然任何apply event的方式没有改变,但是本线程是普通的线程,不是SQL线程,不带有SQL线程的属性。
网友评论