`
wang55www
  • 浏览: 28171 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

多事务同时访问数据库造成事务锁超时问题

阅读更多

今天在工作中遇到一个情况如下:

在分布式事务中insert一条数据成功插入,可以update的时候就报 Lock wait timeout exceeded; try restarting transaction 这种错误。

查了很多资料。

有人遇到这种情况原因是:事务锁超时的时间设置的太短。 需要加长事务锁的时间。 因为我的insert语句可以实现,所以排除这种可能。

还有说,在使用EJB 修改表B Web Service 修改表A 如果 EJB 包括修改表B 那么也会出现这种问题

经过分析,觉得应该是在进行分布式事务的时候。 有其他的线程对数据库进行访问。而且也造成有事务锁没有释放的情况,则分布式事务等待占用数据库锁的线程释放锁。 造成的超时。 于是我开始查找update的代码看看有没有什么问题。 结果偶然发现其他程序也有调用该update并且正常运行。于是我比对调用这个方法程序的不同。 发现在出现问题的方法中使用spring生命了事务。 这样在这个事务中再开启分布式事务相当于事务的嵌套。两个事务一个是spring管理。 一个是手动管理。所以出现了冲突 。 修改spring声明事务的代码。 将调用update方法事务传播行为中修改为SUPPORTS(支持当前事务,如果当前没有事务,就以非事务方式执行)问题解决

分享到:
评论

相关推荐

    一次长事务导致数据库锁等待超时问题跟踪

    3. 超时问题:在数据库配置中,通常设定有事务超时参数。当一个事务等待锁的时间超过这个设定值,数据库系统会报错并结束该事务,这被称为锁等待超时。 三、问题诊断 1. 日志分析:通过查看数据库日志,找出导致锁...

    查看数据库的锁以及事务锁表的超时的调查

    博客的代码,查看当前导致数据库锁的具体sql语句,调查代码逻辑死锁导致数据库超时的例子,对应的博客文章位置http://blog.csdn.net/pfe_nova/article/details/9055981 注意将代码配置文件的连接字符串改成自己实际...

    mysql 事务等待锁超时分析

    mysql 事务等待锁超时分析

    Sql Server 数据库超时问题的解决方法

    Sql Server 数据库超时问题的解决方法 Sql Server 数据库超时问题是指在使用 Sql Server 数据库时,出现的等待响应时间过长或超时的问题。这种问题可能会导致数据库连接中止、查询失败等问题。 一、Sql Server ...

    数据库之事务调优

    8. **数据库配置调整**:如调整缓冲区大小、连接池大小、事务超时时间等,这些都可能影响事务处理效率。 9. **分布式事务处理**:在分布式系统中,处理跨数据库的事务更复杂,需要考虑两阶段提交(2PC)、补偿事务...

    数据库,各种锁的概述

    数据库锁机制是确保数据库事务正确性和数据一致性的重要手段。通过对锁的不同类型及其应用场景的理解,我们可以更加有效地设计并发环境下的应用程序,提高系统的整体性能和可靠性。在实际应用中,根据业务需求合理...

    oracle数据库锁使用

    在处理并发问题时,应谨慎使用锁,避免出现死锁情况,死锁是两个或多个事务等待对方释放资源而无法继续执行的情况。Oracle提供了一些死锁检测和解决机制,例如死锁链路检测和超时机制,以减少死锁的影响。 总之,...

    数据库系统工程师-06事务和锁.zip

    总的来说,事务和锁是数据库管理中的核心概念,它们确保了数据的一致性和完整性,同时也平衡了并发性和性能。对于数据库系统工程师而言,理解和掌握这些知识是至关重要的,因为它们直接影响到数据库的稳定性和效率。

    多数据源事务解决方案,单应用多数据库保证事务

    在实际项目中,可能还需要考虑更多的复杂情况,如事务传播行为(PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW等)、事务超时、异常处理策略等。此外,对于大规模的分布式系统,可能还需要结合分布式事务解决方案...

    DB数据库锁机制及问题PPT学习教案.pptx

    数据库中可能出现的锁问题主要包括锁超时、死锁和锁升级。锁超时发生于一个事务等待获取锁的时间超过了预设的锁等待时间(默认为无限期,可通过修改`LOCKTIMEOUT`参数设置)。当出现死锁时,两个或多个事务互相等待...

    Spring Boot数据库事务控制.zip

    在Spring Boot中,数据库事务控制是实现业务逻辑一致性的重要手段。本资料主要围绕Spring Boot如何进行数据库事务管理进行深入探讨。 首先,我们需要了解什么是事务。事务是数据库操作的基本单位,它保证了一组...

    数据库实现分布式锁.txt

    当多个服务或实例需要同时操作同一份资源时,分布式锁可以保证在任意时刻只有一个服务能获得锁并进行操作,从而避免并发冲突。 #### 二、实现原理 在本案例中,我们将使用数据库作为锁存储介质。具体来说,创建一...

    记录redisson实现redis分布式事务锁

    如果需要严格的ACID特性,还需要结合数据库事务一起使用。 在Spring Boot项目中,`spring-boot-distributed-redisson-master`这个文件名可能表示的是一个包含示例代码的仓库,它演示了如何将Redisson集成到Spring ...

    DB数据库锁机制及问题PPT课件.pptx

    - 锁超时是指在等待锁的过程中,如果超过了设置的`LOCKTIMEOUT`参数值,则第二个事务将收到-911错误代码,表示锁等待超时。 **2. 死锁** - 死锁是指两个或更多的事务互相等待对方释放锁的情况,最终导致所有事务...

    DB2 9.5 中的锁定超时分析新方法

    在DB2 9.5版本中,IBM引入了一种新的方法来分析锁定超时问题,这有助于数据库管理员更好地诊断并解决数据库性能瓶颈。锁定超时是指当一个事务请求锁定一个资源时,如果该资源已被其他事务锁定并且超过指定的时间限制...

    57 停一停脚步:梳理一下数据库的多事务并发运行的隔离机制l.pdf

    共享锁允许多个事务并发读取数据,而排他锁则允许事务获取数据的排他访问权,阻止其他事务获取共享锁或排他锁。 在MySQL中,锁机制的实现相对复杂,涉及到行锁、表锁以及更高级别的意向锁。行锁是针对数据表中某一...

    通过数据库给文件加锁

    数据库系统提供的锁机制可以有效地解决这个问题,因为它们能够确保数据的一致性和完整性。 1. **数据库锁的概念** 数据库锁是数据库管理系统(DBMS)用于控制对数据的并发访问的一种机制。它们可以防止两个事务...

    数据库高并发

    当多个请求同时到达时,数据库需要合理调度这些请求,避免产生锁竞争,保证数据的一致性。这通常涉及到并发控制机制,如乐观锁、悲观锁、多版本并发控制(MVCC)等。 乐观锁假设大多数操作不会引起冲突,只在更新...

    sql数据库死锁查询工具

    在SQL数据库管理中,死锁和阻塞是常见的问题,特别是在多用户环境下,它们可能导致系统性能下降甚至数据丢失。理解并有效地处理这些问题至关重要。本文将深入探讨“sql数据库死锁查询工具”及其在解决数据库死锁和...

    DB2锁问题处理最佳实践

    对于锁问题的调优,主要涉及调整数据库配置参数、优化事务执行计划、合理设计应用逻辑等方面。例如,通过调整锁超时时间、设置合适的隔离级别、优化索引和查询语句,可以减少锁争用,提高数据库性能。 总结来说,...

Global site tag (gtag.js) - Google Analytics