位置: 编程技术 - 正文

mysql 数据库死锁原因及解决办法(mysql 死锁处理)

编辑:rootadmin

推荐整理分享mysql 数据库死锁原因及解决办法(mysql 死锁处理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql数据库死锁产生的原因及解决方案,解决mysql死锁,mysql数据库死锁产生的原因及解决方案,mysql数据库死锁排查,mysql数据库死锁捕获什么异常,mysql数据库死锁处理方法有哪些,mysql数据库死锁捕获什么异常,mysql数据库死锁处理方法,内容如对您有帮助,希望把文章链接给更多的朋友!

死锁(Deadlock)

所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。 一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被其他线程占用并堵塞了的资源。例如,如果线程A锁住了记录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象。计算机系统中,如果系统的资源分配策略不当,更常见的可能是程序员写的程序有错误等,则会导致进程因竞争资源不当而产生死锁的现象。锁有多种实现方式,比如意向锁,共享-排他锁,锁表,树形协议,时间戳协议等等。锁还有多种粒度,比如可以在表上加锁,也可以在记录上加锁。

产生死锁的原因主要是:

(1)系统资源不足。(2) 进程运行推进的顺序不合适。(3)资源分配不当等。

如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。

产生死锁的四个必要条件:

(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

死锁的预防和解除:

理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源,在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配 。因此,对资源的分配要给予合理的规划。如何将死锁减至最少

虽然不能完全避免死锁,但可以使死锁的数量减至最少。将死锁减至最少可以增加事务的吞吐量并减少系统开销,因为只有很少的事务回滚,而回滚会取消事务执行的所有工作。由于死锁时回滚而由应用程序重新提交。

mysql 数据库死锁原因及解决办法(mysql 死锁处理)

下列方法有助于最大限度地降低死锁:

(1)按同一顺序访问对象。(2)避免事务中的用户交互。(3)保持事务简短并在一个批处理中。(4)使用低隔离级别。(5)使用绑定连接。

按同一顺序访问对象

如果所有并发事务按同一顺序访问对象,则发生死锁的可能性会降低。例如,如果两个并发事务获得 Supplier 表上的锁,然后获得 Part 表上的锁,则在其中一个事务完成之前,另一个事务被阻塞在 Supplier 表上。第一个事务提交或回滚后,第二个事务继续进行。不发生死锁。将存储过程用于所有的数据修改可以标准化访问对象的顺序。

避免事务中的用户交互

避免编写包含用户交互的事务,因为运行没有用户交互的批处理的速度要远远快于用户手动响应查询的速度,例如答复应用程序请求参数的提示。例如,如果事务正在等待用户输入,而用户去吃午餐了或者甚至回家过周末了,则用户将此事务挂起使之不能完成。这样将降低系统的吞吐量,因为事务持有的任何锁只有在事务提交或回滚时才会释放。即使不出现死锁的情况,访问同一资源的其它事务也会被阻塞,等待该事务完成。

保持事务简短并在一个批处理中

在同一数据库中并发执行多个需要长时间运行的事务时通常发生死锁。事务运行时间越长,其持有排它锁或更新锁的时间也就越长,从而堵塞了其它活动并可能导致死锁。

保持事务在一个批处理中,可以最小化事务的网络通信往返量,减少完成事务可能的延迟并释放锁。

使用低隔离级别

确定事务是否能在更低的隔离级别上运行。执行提交读允许事务读取另一个事务已读取(未修改)的数据,而不必等待第一个事务完成。使用较低的隔离级别(例如提交读)而不使用较高的隔离级别(例如可串行读)可以缩短持有共享锁的时间,从而降低了锁定争夺。

使用绑定连接

使用绑定连接使同一应用程序所打开的两个或多个连接可以相互合作。次级连接所获得的任何锁可以象由主连接获得的锁那样持有,反之亦然,因此不会相互阻塞。

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

批量 kill mysql 中运行时间长的sql KILL语法KILL[CONNECTION|QUERY]thread_id每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOWPROCESSLIST语句查看哪些线程正在运行,并使用KILLthread_id语

MySQL中create table as 与like的区别分析 本文分析了MySQL中createtableas与like的区别。分享给大家供大家参考,具体如下:对于mysql的复制相同表结构方法,有createtableas和createtablelike两种,区别是

标签: mysql 死锁处理

本文链接地址:https://www.jiuchutong.com/biancheng/319727.html 转载请保留说明!

上一篇:MySQL中distinct与group by语句的一些比较及用法讲解

下一篇:mysql数据库锁的产生原因及解决办法(mysql 锁详解)

  • 留抵税额做进项转出怎么做分录
  • 分红给合伙企业后,被普通合伙人借走
  • 纳税调整项目包括哪些?请简单列举
  • 居民个人所得计算怎么做
  • 什么是试算平衡?如何进行试算平衡
  • 计提增值税及附加税费怎么算
  • 待处理财产损益借贷方向
  • 企业留存的盈余公积属于哪个会计科目
  • 计税依据的定义
  • 对公收到一分钱怎么做账
  • 劳务收入个税需要进行所得税汇算吗
  • 五联普通发票盖章要求
  • 工会经费为员工计税依据是什么
  • 外币借款汇兑差额资本化额怎么计算
  • 产品入库实际成本是什么凭证
  • 新办公司注册资金直接支付开办费吗
  • 申报文化事业建设费
  • 不缴地税国税可停票吗?
  • 餐饮消费,碰到商家不愿意开发票怎么办?
  • 长期股权投资涉及或有对价的帐务处理
  • 弥补以前年度亏损从哪里取数
  • 汇总纳税企业的分公司如何享受税收优惠政策
  • 办税人员的职责和义务
  • 商品进销差价如何结平
  • 贷款利息可以抵扣吗
  • 无票收入的账务怎么处理
  • 什么是民政福利企业
  • 版权许可授权书
  • 如何解决win10系统安装不兼容驱动的问题
  • 劳务报酬计入综合所得吗
  • 进项税和销项税怎么抵扣
  • win7系统鼠标键盘
  • php解析原理
  • 资产减值损失结转
  • 电脑怎样设置共享文件夹
  • 零售业如何盈利
  • php 验证码
  • 格里戈里耶奈尔尤伯夫
  • php面向对象的三大特性
  • thinkphp自定义标签page
  • 结存成本怎么计算先进先出法
  • 增值税与消费税中关于包装物押金规定的异同点
  • 租集体土地建厂合法吗
  • 个体户开票超过多少认定为小规模
  • 工资以现金形式发放英文
  • 金税四期对企业影响
  • 材料采购如何做好市场调研工作
  • 小微企业所得税优惠政策最新2023
  • 企业所得税如何抵扣
  • 2、开办费用计入哪个账户?
  • 捆绑销售如何做税务处理合适?
  • 应付账款周转率越大越好还是越小越好?
  • 事业单位补提以前年度应计提未计折旧的会计分录
  • 投资收益主要包括哪些
  • 工程类企业存货包括哪些
  • 一般纳税人哪些项目可以简易征收
  • 净资产收益率计算公式
  • 记账凭证的附件数可以手改吗
  • 电脑超频以后变得很卡
  • csrss exe
  • xp系统修复怎么操作
  • 如何设置windows密码
  • win10开机绿色
  • win内存占用率过高
  • 如何配置centos7下的apache服务
  • 如何删除双系统中的linux系统
  • cocos2d官网
  • uinty实现玩家跟随鼠标位置平滑旋转角度
  • 使用多进程web
  • cssimport
  • python ftps
  • json jquery
  • JQuery Ajax WebService传递参数的简单实例
  • python井字游戏
  • android navigation bar
  • python中set用法
  • 公司税务电子发票怎么开
  • 新公司印花税的缴纳
  • 红色通知字体
  • 税控盘打不开
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设