CannotAcquireLockException 锁超时

CannotAcquireLockException 锁超时

表锁和行锁

表锁:在添加数据时把整个表锁住

行锁:在添加数据时只锁添加数据的一行

增加索引把表锁改变为行锁

栏位:username 索引类型: UNIQUE

//main
public static void main(String[] args) {
    ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    AccountService accountService = ctx.getBean(AccountService.class);
    accountService.update3();
}

//update3

public void update3() {
    jdbcTemplate.update("update tase set money = ? where username=?;", 00, "aa");
    accountService2.update4();
    int i = 1 / 0;
}

//update3

public void update4() {
    jdbcTemplate.update("update tase set money = ? where username=?;", 00, "bb");
}

//xml

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <!--以add开始的方法添加事务-->
        <tx:method name="add*"/>
        <tx:method name="insert*"/>
        <tx:method name="delete*"/>
        <tx:method name="update3" propagation="REQUIRED"/><!--REQUIRED为默认的-->
        <tx:method name="update4" propagation="REQUIRES_NEW"/>
    </tx:attributes>
</tx:advice>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dameng超时解决办法是通过调整等待时间和优化SQL语句来解决。 首先,我们可以调整等待时间。通常,在数据库中设置了等待超时时间,如果一个事务在超过这个时间仍然无法获取到,那么系统会自动回滚事务并释放资源。通过增加等待超时时间,可以增加事务获取的时间,提高获取的成功率。但是,过长的等待超时时间也会增加系统的响应时间,所以需要根据具体情况进行调整。 其次,我们可以优化SQL语句。超时通常是由于数据库中存在耗时长的SQL语句导致的。通过对这些SQL语句进行分析和优化,可以减少对数据库的访问时间,降低等待的发生率。优化SQL可以从多个方面入手,比如优化索引,避免使用全表扫描等。此外,也可以通过将长时间运行的SQL拆分成多个较短的SQL,减少事务持有的时间。 另外,还可以考虑使用分布式来解决超时的问题。分布式是一种可以跨多个节点进行协作的机制,可以避免单个节点上的超时问题。通过使用分布式,可以将的控制权交给一个单独的节点,并通过网络通信来保证多个节点的一致性,避免超时问题的发生。 总之,dameng超时问题可以通过调整等待时间、优化SQL语句和使用分布式来解决。需要根据具体情况进行分析和调整,以提高系统的性能和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值