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

Mysql并发时经典常见的死锁原因及解决方法

 
阅读更多
Mysql并发时经典常见的死锁原因及解决方法


MySQL有三种锁的级别:页级、表级、行级。

表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般

表级锁不会产生死锁.所以解决死锁主要还是针对于最常用的InnoDB.


死锁的关键在于:两个(或以上)的Session加锁的顺序不一致。
那么对应的解决死锁问题的关键就是:让不同的session加锁有次序


对于这个问题的改进很简单,直接把所有分配到的借款人直接一次锁住就行了。
Select * from xxx where id in (xx,xx,xx) for update
在in里面的列表值mysql是会自动从小到大排序,加锁也是一条条从小到大加的锁



最好别用for update,可使用版本号进行




https://www.cnblogs.com/zejin2008/p/5262751.html(Mysql并发时经典常见的死锁原因及解决方法)








分享到:
评论

相关推荐

    mysql死锁解决

    本文将详细介绍MySQL中的死锁现象、其产生的原因以及如何有效地检测与解决死锁问题。 #### 一、死锁定义 死锁是指两个或两个以上的事务在执行过程中,由于每个事务都持有某些资源且又都在等待其他事务释放其持有的...

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

    本文将探讨MySQL死锁的产生原因以及解决方案。 **死锁的产生原因** 1. **资源竞争与顺序依赖**:当两个事务A和B分别持有对方需要的资源,A等待B释放资源,B也在等待A释放资源,就会形成死锁。例如,事务A锁定表A后...

    mysql死锁的一些案例

    MySQL数据库在处理并发事务时,可能会遇到一种特殊的情况,即死锁。死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉它们将无法继续执行。死锁是数据库系统中常见的问题,...

    几种不常见的MySQL InnoDB 死锁情况--1

    MySQL的InnoDB存储引擎在处理并发事务时,为了保证数据的一致性,采用了行级锁定机制。然而,即使有了这样的机制,死锁仍然可能发生,尤其是在并发操作复杂的环境中。本篇文章将探讨几种不常见的MySQL InnoDB死锁...

    何登成 - 管中窥豹——MySQL(InnoDB)死锁分析之道

    何登成首先分享了他选择探讨死锁话题的原因,因为他本人在解决死锁问题上有丰富的经验,并且死锁是MySQL DBA在日常工作中经常需要面对的复杂问题。在实际工作中,死锁问题不仅仅局限在数据库层面,还可能涉及到业务...

    mysql死锁检测机制初探1

    在这个实例中,MySQL 检测到一个死锁,原因是事务 7513201817 等待的资源被另外一个事务占用。MySQL 选择了回滚的事务,以解决死锁问题。 MySQL 的死锁检测机制是一个重要的机制,用于检测和解决事务之间的死锁问题...

    mysql死锁分析

    #### 死锁原因深入剖析 ##### Delete操作的加锁逻辑 在InnoDB中,`DELETE`操作会根据当前的事务隔离级别和查询条件的不同而采取不同的加锁策略。在`RR`(Repeatable Read)隔离级别下,`DELETE`操作默认使用`next...

    mysql-一些常见的mysql死锁案例-笔记记录.zip

    总之,理解MySQL死锁的原理、识别死锁的方法以及如何预防和解决死锁,对于提升系统的稳定性和性能至关重要。在实际操作中,应结合业务需求和数据库特性,采取相应的策略来避免死锁的发生。通过深入学习和实践,我们...

    MySQL 死锁产生原因和解决办法

    #### 二、死锁产生的原因及示例 ##### 1、死锁产生的原因 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的状态,且若无外力介入,这些进程将无法继续推进。死锁的关键在于:不同会话...

    mysql高并发解决方案

    MySQL作为一款广泛使用的开源关系型数据库,经常在处理高并发场景时面临挑战。高并发意味着大量用户在同一时间访问系统,这对数据库的性能、稳定性和扩展性提出了极高要求。本资料包"3月20php+mysql高并发解决方案...

    MYSQL 数据库死锁

    MySQL数据库死锁是数据库系统中常见的问题,它发生在两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉它们将无法继续执行。了解和处理死锁是数据库管理员和开发人员必备的技能。...

    这六个 MySQL 死锁案例,能让你理解死锁的原因!.doc

    MySQL 死锁案例详解 在 MySQL 中,死锁是指两个或两个以上的进程...在解决死锁问题时,需要根据具体的业务场景和锁的级别来进行分析和解决。 MySQL 死锁的解决方案是让不同的 Session 加锁有次序,以避免死锁的出现。

    nodejs测试mysql并发

    本篇文章将深入探讨如何使用Node.js进行MySQL并发请求的测试。 首先,我们需要理解Node.js的核心概念。Node.js是基于Chrome V8引擎的JavaScript运行环境,它通过libuv库提供了异步I/O操作,使得JavaScript可以在...

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

    为了避免或最小化 MySQL 死锁,需要了解死锁的原因和解决方法。 死锁的原因 死锁可能是由多种原因引起的,包括: * 事务之间的资源竞争 * 锁的使用不当 * 事务隔离级别的设置不当 * 应用设计逻辑的缺陷 * 数据库...

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

    MySQL死锁问题是一种常见的数据库异常状况,特别是在高并发的在线事务处理(OLTP)系统中。死锁发生在两个或多个事务之间,它们彼此等待对方释放资源,导致事务无法继续执行。MySQL中的死锁主要与存储引擎的锁机制...

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

    最后,总结一下,死锁的分析和解决是一个综合性的任务,需要结合MySQL的事务处理、锁机制以及并发控制等多方面的知识。通过深入理解和解析死锁日志,我们可以更好地诊断和预防此类问题,从而提高数据库的性能和稳定...

Global site tag (gtag.js) - Google Analytics