1、在应用中,如果不同的程序会并发存取多个表,应该尽量约定以相同的顺序来访问表,这样可以大大降低产生死锁的机会。由于两个session访问表的顺序不同,发生死锁的机会就非常高,但是如果以相同的顺序来访问,死锁就可以避免;  

2、在程序以批量方式处理数据的时候,如果事先对数据排序,保证每个线程按固定的顺序来处理记录,也可以大大降低出现死锁的可能;  

3、在事务中,如果要更新记录,应该直接申请足够级别的锁,即排他锁,而不应该先申请共享锁,从而造成锁冲突,甚至死锁;  

4、在REPEATABLE-READ隔离级别下,如果两个线程同时对相同条件记录用SELECT...FOR UPDATE加排他锁,在没有符合该条件记录情况下,两个线程都会加锁成功。程序发现记录尚不存在,就试图插入一条记录,如果两个线程都这么做,就会出现死锁,这种情况下,将隔离级别READ COMMITTED就可以避免问题;  

5、当隔离级别为READ COMMITTED时,如果两个线程都先执行SELECT...FOR UPDATE,判断是否存在符合条件的记录,如果没有,就插入记录。此时,只有一个线程能插入成功,另外一个线程就会出现锁等待,当第一个线程提交后,第二个线程会因为主键冲突出错,但虽然这个线程出错了,却会获得一个排他锁,这时如果有第三个线程又来申请排它锁,也会出现死锁。

6、如果出现了死锁,可以使用命令的检查锁信息的SQL命令来确定最后一个死锁产生的原因。返回结果中包括死锁相关的事务的详细信息,如引发死锁的SQL语句,事务已经获得的锁,正在等待什么锁,以及被回滚的事务等。据此可以分析死锁产生的原因和改进措施。

mysql避免死锁的方法相关推荐

  1. 解决MySQL事务未提交导致死锁报错 避免死锁的方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/xuheng8600/article/d ...

  2. mysql死锁解决方法_mysql出现死锁的原因及解决方案

    mysql出现死锁的原因及解决方案 发布时间:2020-06-04 16:35:40 来源:51CTO 阅读:418 作者:三月 本文主要给大家介绍mysql出现死锁的原因及解决方案,文章内容都是笔者 ...

  3. mysql关于死锁的优化_mysql死锁探究及优化

    什么是锁? 锁是计算机为了平衡协调多个进程或线程并发访问资源的机制.计算机除了cpu,ram,I/O,数据也是一种共享资源.锁冲突是影响数据库并发性能的一个重要因素. 例如行锁,表锁等,读锁,写锁等, ...

  4. mysql 表死锁_MySQL Innodb表导致死锁日志情况分析与归纳

    案例描述在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志. 两个sql语句如下:(1)insert into backup ...

  5. MySQL锁表解决方法(转)

    MySQL锁表解决方法 一.我的处理过程 1.查进程,主要是查找被锁表的那个进程的ID SHOW PROCESSLIST; 2.kill掉锁表的进程ID KILL 10866;//后面的数字即时进程的 ...

  6. mysql deadlock6_mysql死锁(deadlock)分析及解决

    问题1: 怎么会产生死锁那? 通过 show engine innodb status,捕获到了死锁详情 见下图: 注: 子订单表:channel_sub_order_0, 子订单号:suborder ...

  7. MySQL 遇到的死锁问_一个罕见的MySQL redo死锁问题排查及解决过程

    原标题:一个罕见的MySQL redo死锁问题排查及解决过程 作者:张青林,腾讯云布道师.MySQL架构师,隶属腾讯TEG-基础架构部-CDB内核开发团队,专注于MySQL内核研发&相关架构工 ...

  8. mysql数据库死锁重启后无效_mysql数据库死锁解决办法

    Date: 2016.04.30 数据库死锁的问题,还是挺让人讨厌的. 这里提供两个解决数据库死锁的方法: 1)重启数据库(谁用谁知道) 2)杀掉抢资源的进程: 先查哪些进程在抢资源:SELECT * ...

  9. mysql数据库死锁几种情况

    mysql数据库死锁的产生原因及解决办法 数据库和操作系统一样,是一个多用户使用的共享资源.当多个用户并发地存取数据 时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会 ...

最新文章

  1. xcode 4.3.2 use storyboard创建TableView
  2. 前沿技术探秘:知识图谱构建流程及方法
  3. 使用指针判断数组是否为上三角矩阵
  4. 超酷实用的jQuery焦点图赏析及源码
  5. 浅谈 PHP 与手机 APP 开发(API 接口开发)
  6. [scala-spark]7. list 与 map
  7. python语言用什么来表明每行代码的层次关系_《计算机二级Python语言程序设计考试》第2章: Python语言基本语法元素...
  8. 当我们在谈论技术时,技术的本质和价值究竟是什么?
  9. maven打jar包pom配置
  10. linux shell 网盘,linux在shell中获取时间
  11. Java 数据库连接
  12. springboot后台怎么获取前端传过来的excel_基于SpringBoot的全自动办公系统源码文档全部免费分享...
  13. 转载:相同版本的JVM和Java应用,在 x86 和AArch64 平台性能相差30%
  14. DELPHI XE10 fmx表格控件Grid单元格根据内容值来设置颜色
  15. 探讨广东技术师范大学Windows下MentoHUST上网认证
  16. npm 中报错3 errors and 3 warnings potentially fixable with the`--fix` option.
  17. Java实现对已有的PDF添加页码 加 总页码(二)
  18. python3 经典练习题:输入三个数,输出三个数中的最大数
  19. 青龙面板+nolan-依赖+拉库+企业微信推送(手把手喂饭,各版本通用)
  20. Error:A problem occurred configuring project ':app'. failed to find target with hash string 'andro

热门文章

  1. 做游戏,学编程(C语言) 9 贪吃蛇
  2. cookie java 写入_JAVA中如何读写COOKIE
  3. TeaTalk·Online 演讲实录 | 圆满完结 大数据+云原生,再度风云起
  4. 昇腾 AI 成就了一群玩船模的大学生——创新,有“模”有 Young
  5. 【历史上的今天】8月19日:大型计算机先驱和小型机之父诞生;中国雅虎邮箱成历史...
  6. 马化腾:《王者荣耀》将举办AI电竞赛;美团发布自研无人机,15分钟配送到家;微软将为员工发放1500美元奖金|极客头条...
  7. 火山引擎 veStack 在企业办公场景的落地实践
  8. Linux 在 soft lockup 时,可以远程调试吗?
  9. 《2020数字中国指数报告》重磅发布,“上云”成产业数字化必选项
  10. 编译器说 Lambda 表达式中的变量必须是 final 的,我偏不信 | 原力计划