MySQL system lock 产生的原因:
这里先直接给出原因供大家直接参考,简单的说从库出现system lock 应该视为正在干活,而不是名称看到的“lock”,这是由于slave端不存在语句(row格式)的执行,都是Event的直接apply,状态没有切换的机会,也可以认为是slave端状态划分不严谨,其实做一个pstack就能完全看出问题。下面是产生的必要条件:
- 由于大量的小事物,比如如UPDATE/DELETE table where处理一行数据,这会出现只包含一行数据库的DML event的语句,如果table是一张大表,则会加剧这种可能。
- 这个表上没有主键或者唯一键,问题加剧。
- 由于类似Innodb lock堵塞,也就是slave从库修改了数据同时和sql_thread也在修改同样的数据,问题加剧。
- 确实I/O扛不住了,可以尝试修改参数。
如果是大量的表没有主键或者唯一键可以考虑修改参数slave_rows_search_algorithms 试试。
作者:重庆八怪
链接:https://www.jianshu.com/p/839e1fa81edb
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
许多文章都是从书本获取,并非自己原创,为了自己更好的记忆和学习,如果涉及版权,请说明,我会删除。

浙公网安备 33010602011771号