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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2020-09-02 14:55  和尚也爱看AV  阅读(689)  评论(0)    收藏  举报