springboot项目操作mysql出现锁表问题情况

情景发生说明

我在使用cron定时器每10s更新一次mysql数据库,由于操作过于频繁,导致出现锁表问题,及无法操作数据库且会报错。

解决方案

具体查看:https://blog.csdn.net/weberhuangxingbo/article/details/88709556

SELECT * FROM information_schema.innodb_trx
SELECT * FROM information_schema.innodb_locks 
SELECT * FROM information_schema.innodb_lock_waits
kill 19692

具体就是先执行sql:SELECT * FROM information_schema.innodb_trx 查看哪个进程锁了直接kill 进程号即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot中使用MyBatis操作MySQL时,可能会遇到锁表情况锁表是指在数据库操作期间,某个表被其他事务或线程锁定,导致当前事务无法访问或修改该表的数据。 要解决这个问题,可以考虑以下几个方面: 1. 事务隔离级别:通过设置事务的隔离级别来控制并发访问数据库时的锁定行为。在Spring Boot中,默认的事务隔离级别是READ_COMMITTED,可以根据实际需求整为其他级别,如REPEATABLE_READ或SERIALIZABLE。 ```java @Transactional(isolation = Isolation.REPEATABLE_READ) public void myMethod() { // 业务逻辑 } ``` 2. 并发控制:使用数据库的并发控制机制来避免或减少锁表情况的发生。例如,在MyBatis中可以使用乐观锁或悲观锁来实现并发控制。乐观锁通过版本号或时间戳等机制来判断数据是否被修改,而悲观锁则是在访问数据之前就将其锁定,直到事务完成为止。 3. SQL优化:通过对SQL语句进行优化,减少对同一数据资源的并发访问,从而减少锁表的可能性。例如,避免不必要的全表扫描、减少事务的持有时间等。 4. 分表分库:如果系统中某个表的并发访问频率非常高,可以考虑将其进行分表或分库处理,将数据分散到多个物理存储中,从而提高系统的并发性能。 需要注意的是,锁表是一个复杂的问题,具体的解决方案需要根据实际情况进行整和优化。以上只是一些常见的方法,具体的解决方案还需要结合业务场景和实际需求来确定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘大猫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值