开发者社区> 问答> 正文

mysql主从同步进程死锁的问题

16
上图是我mysql 从同步进程锁住的时候一张截图。数据库引擎是myisam,途中我们看到当前同步进程正在update web_company这张数据表,该进程locaked后,导致了select web_company语句一直在等待。
一旦死锁后,改进程kill不掉了就,主从也停不掉,mysql也不能正常停止,只能强制杀死,强制杀死后数据表就损坏了,我只能修复,已经出现三次了。
这段时间,我的web_company数据也就一百多万,其它也有一百多万数据的数据表,也从来没有死锁过。

展开
收起
落地花开啦 2016-02-13 15:28:45 3321 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    插入和更新容易引起表锁是必然的,主要是要看锁表多久,如果是多条SQL引起的,可能还要复杂一点,如果只是一条SQL经常出现表锁,则可以通过拆分SQL,减轻查询和运算的成本来缓解,大一些的应用,应该考虑用缓存抵挡更新的压力,如果不是很在乎innodb下count的慢速度,其实完全可以用innodb代替myisam,在有条件查询的情况下,innodb和myisam效率差不多。
    如果上面的修改代码和引擎的办法还不能解决,那只能通过分表来减轻表扫描和锁表的压力了。业务到了一定程度,重构架构是必然的。

    2019-07-17 18:42:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像