`
632244434
  • 浏览: 1793 次
  • 性别: Icon_minigender_1
  • 来自: 632244434
文章分类
社区版块
存档分类
最新评论

解决mysql中事务的deadlock问题步骤

阅读更多

1. 通过调整innodb_lock_wait_timeout的值,默认50,增加这个值不是一个好办法,会从某种程序上减少响应速度。

2. 调整隔离模式(isolation)为应用可以接受的比较低的级别,例如设置为:READ COMMITTED
如果应用接收不了,低的隔离级别,可以考虑使用session,在执行容易产生deadlock的事务之前执行命令:SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;然后执行事务。

3. 调整事务为合理的大小,事务越小越不容易产生死锁。

4. 对于容易产生死锁的事务来说,可以一直指定需要的资源,既加锁所有涉及的表,不使用先使用意向锁,在使用排它锁。例如:

set autocommit=0;

lock tables t1 write, t2, write , t3 read;

update statement;

commit;

unlock tables t1,t2,t3;

5. 对不同的应用访问同一表,使用相同的顺序,对于表里面的数据,访问里面的行也使用相同次序。

6. 优化表的索引,因为innodb是row lock, row lock是对索引上的索引项加锁,优化调整索引在一定程度上能避免一些死锁问题。

7. 使用show innodb status 来分析TRANSACTIONS里面的内容,分析那些语句产生死锁,从而做出一些调整,或者使用maatkit工具中mk-deadlock-logger 来记录那些语句产生deadlock.

分享到:
评论

相关推荐

    mysql报错:Deadlock found when trying to get lock; try restarting transaction的解决方法

    MySQL中的死锁问题通常发生在并发事务之间,当两个或多个事务相互等待对方释放资源时发生。在描述的场景中,程序在尝试更新数据时遇到了"Deadlock found when trying to get lock; try restarting transaction"的...

    C3P0错误APPARENT DEADLOCK 解决根本问题

    网上传言C3P0是因为本身的BUG问题,然而今天我遇到这个问题并解决了,结果发现并不是。通过配置c3p0.maxStatements=0 这种方案只是治标不治本,或者干脆无效。我上传的解决方案肯定能解决这个问题的根本原因。出现...

    SQL Server上的一个奇怪的Deadlock及其分析方法

    Deadlock是SQL Server中的一种常见问题,它会导致事务无法继续执行,影响系统的性能和可靠性。了解Deadlock的产生原因和分析方法是非常重要的。本文将详细介绍SQL Server上的一个奇怪的Deadlock及其分析方法。 ...

    mysql innodb死锁问题详解.docx

    在实际应用中,如果遇到类似的问题,如旅游电商平台接口出现请求超时异常,可以通过以下步骤进行排查和解决: 1. 确认环境:首先了解数据库版本(例如MySQL 5.6.34)和存储引擎(InnoDB),并分析错误日志,发现...

    mysql死锁检测机制初探1

    在 MySQL 中,死锁检测机制是一种重要的机制,用于检测和解决事务之间的死锁问题。在本文中,我们将详细介绍 MySQL 死锁检测机制的原理和实现。 一、死锁的定义和原理 在 MySQL 中,死锁是指两个或两个以上的事务...

    避免或最小化mysql死锁deadlock一些方法.docx

    在 MySQL 中,死锁是指两个或多个事务之间的资源竞争,导致事务无法继续执行的情况。死锁可能会导致数据库性能下降,甚至整个数据库无法访问。为了避免或最小化 MySQL 死锁,需要了解死锁的原因和解决方法。 死锁的...

    DeadLock查找死锁位置

    DeadLock查找死锁的位置及解决 DeadLock查找死锁的位置及解决

    MySQL死锁的产生原因以及解决方案

    MySQL数据库在多用户并发操作中,为了保证数据的一致性和完整性,使用了锁机制来管理事务的并发控制。死锁是并发控制中的一种异常状态,通常发生在两个或多个事务之间,由于相互等待对方释放资源而形成僵局。本文将...

    一个最不可思议的MySQL死锁分析1

    MySQL中的死锁问题是一个复杂而微妙的议题,尤其是在数据库优化和并发控制中。本文将深入探讨一个看似不可能发生的死锁案例,并分析其背后的原理。死锁通常发生在多个事务相互等待对方释放资源的情况下,但在这个...

    MYSQL 数据库死锁

    下面我们将深入探讨MySQL中的InnoDB存储引擎如何处理死锁,以及如何通过实际例子来理解这个问题。 首先,InnoDB存储引擎是MySQL中默认的事务型存储引擎,它支持行级锁定,以减少锁定资源的开销并提高并发性能。然而...

    MySQL死锁问题分析及解决方法实例详解

    本篇文章将深入探讨MySQL中的死锁问题,以及如何进行分析和解决。 首先,了解MySQL的不同存储引擎的锁机制是至关重要的。MyISAM和MEMORY引擎使用表级锁,意味着对整个表进行锁定,虽然加锁速度快,但并发性能较低,...

    SQL Server Blocking and Deadlock

    - **Repeatable Read**:通过在事务结束时释放锁来解决重复性脏读问题。 - **幻影**:指一个事务读取了一组数据后,另一事务插入新数据,第一个事务再次读取时发现多了数据行。 - **Serializable**:通过使用...

    【Linux系统无法访问MySQL数据库怎么办】-sql无法访问数据库-.doc

    通过以上步骤和方法,你应该能够解决Linux系统无法访问MySQL数据库的问题。在处理这类问题时,关键是正确诊断问题的根源,然后针对性地采取措施。如果问题依然存在,建议查阅MySQL官方文档或在线社区寻求帮助。

    mysql死锁分析

    事务1和事务2在尝试获取锁的过程中,形成了循环等待的情况,即事务1等待事务2释放锁,事务2又等待事务1释放锁。这最终导致了死锁。 #### 总结 死锁是数据库管理中的一个重要问题,尤其是对于高并发的应用场景。...

    c语言 deadlock

    在计算机科学中,死锁(Deadlock)是一个关键的系统状态问题,特别是在多线程编程和操作系统设计中。当我们谈论"C语言死锁"时,实际上是在讨论如何在使用C语言编写多线程程序时避免死锁的发生。死锁是指两个或多个...

    Deadlock detection

    Dreadlocks提供了一个新颖且高效的解决方案,用于解决共享内存环境中并发程序的死锁问题。通过使用紧凑的线程摘要表示锁的等待图,并通过动态传播这些摘要,Dreadlocks能够在不显著增加开销的情况下实现有效的死锁...

    Deadlock_Avoidance_in_PCI_Express_Based_Systems_Final

    在PCI Express技术中,死锁(Deadlock)是一个非常关键的问题,它是指多个代理(Agent)在执行任务过程中相互等待,导致系统资源无法被进一步使用,从而造成整个系统的停滞。 在文章《Deadlock Avoidance in PCI ...

    mysql死锁的一些案例

    `命令查看MySQL的当前状态,包括死锁信息,这对于诊断和解决问题非常有帮助。 总之,理解MySQL中的死锁现象和避免策略对于数据库管理员和开发者来说至关重要。通过合理设计事务和资源访问顺序,配合适当的系统配置...

Global site tag (gtag.js) - Google Analytics