数据库锁表原因、排查、解决 一.场景场景1场景2 二.原因三.排查四.解决方案 一.场景 场景1 锁表通常发生在DML( insert 、update 、del
锁表通常发生在DML( insert 、update 、delete )
A操作进行全量数据同步,对整个表的粒度进行上锁,导致B操作只能等待A操作完成才能进入插入数据。此时就出现了锁表问题。
DDL也会发生锁表
例如在 Mysql 操作一张大表,利用 alter 语句修改或新增字段的时候,恰巧有一个长事务(包括读)在操作此表,会触发修改等待,造成锁表。
当多个事务处理对多个资源同时访问时,若双方已锁定一部分资源但也都需要对方已锁定的资源时,无法在有限的时间内完全获得所需的资源,就会处于无限的等待状态,从而造成其对资源需求的死锁,导致锁表。
mysql 为例
执行 sql:
select * from infORMation_schema.processlist where command not in (‘Sleep’) ORDER BY time desc
通过此命令也可以查询到 mysql 的慢 sql 语句,进行优化,info 字段即为具体执行的 sql 语句。
以我遇到过的场景为例:cdc 全量同步锁表问题
CDC 全量同步锁表问题是指在使用 CDC 技术进行数据库同步时,为了保证数据的一致性,需要在全量同步阶段对源数据库的表或者整个数据库进行加锁,防止在同步过程中发生数据的变更。这种锁表问题可能会影响源数据库的性能和可用性,所以需要谨慎选择同步方案和时机。
CDC 全量同步锁表问题的解决方法可能因不同的 CDC 工具而有所不同,但一般都是通过以下几种方式:
如有错误欢迎指正
来源地址:https://blog.csdn.net/jj89929665/article/details/130239604
--结束END--
本文标题: 数据库锁表原因、排查、解决
本文链接: https://www.lsjlt.com/news/397226.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0