锁表的情形和如何解决

缩表的情形
  • 大事务操作:如果一个事务涉及到大量的数据修改、插入或删除,会占用表级锁,影响其他事务的并发操作。
  • 长事务:长时间执行的事务会持有锁资源,导致其他事务等待,增加锁表风险。
  • 无索引或不当索引:没有或者使用不合适的索引会导致查询效率低下,需要锁住更多的行或表。
  • 死锁:两个或多个事务相互等待对方释放资源,形成死锁,导致涉及的表被锁住。
  • 高并发:在高并发环境下,大量的事务同时竞争资源,可能导致某些事务无法获取所需的锁,从而影响正常的操作。
  • 不同的锁级别:如果不同事务使用了不同的锁级别,比如某个事务使用了表级锁而另一个事务使用了行级锁,可能导致锁竞争和表级锁的出现

如何解决

  • 优化sql语句
  • 分库分表
  • 使用行级锁,for update\for share 
  • 避免长事务
  • 加入缓存
  • 定时清理数据,释放锁资源
posted @ 2024-04-15 10:13  拥有人鱼线的程序猿  阅读(191)  评论(0)    收藏  举报