看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

一、什么是死锁

加锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。任何事务都需要获得相应对象上的锁才能访问数据,读取数据的事务通常只需要获得读锁(共享锁),修改数据的事务需要获得写锁(排他锁)。当两个事务互相之间需要等待对方释放获得的资源时,如果系统不进行干预则会一直等待下去,也就是进入了死锁(deadlock)状态。

二、死锁产生的场景1.数据库表准备1.1. 创建数据库表#创建数据库 create database chuanzhi; #选择数据库 use chuanzhi; #创建测试表 CREATE TABLE `tb_heima` ( `id` INT NOT NULL, `username` VARCHAR(45) NULL, PRIMARY KEY (`id`) ); #插入测试数据 INSERT INTO `tb_heima` (`id`, `username`) VALUES (1, 传智教育-教育行业A股IPO第一股);2.死锁场景演示2.1. 打开一个dos窗口mysql -u账号 -p密码,进入mysql命令行输入:
看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法
开启一个事务,mysql> begin;
看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法
执行更新语句,mysql> update tb_heima set username = heima where id =1;
看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

注意:此时更新是成功的,但并未提交事务。

2.2.再打开一个dos窗口登录mysql,开启另一个事务操作同上。再次执行更新语句,mysql> update tb_heima set username = heima where id =1;
看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

注意:此时第二个窗口处于等待中,需要等待第一个窗口释放写锁才能执行成功。

等待一段时候后,第二个窗口报错了
看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

注意:由于第一个窗口未提交事务,导致第二个窗口在等待一段时候后,超过锁定等待超时。

三、解决死锁问题

通过mysql客户端工具连接,按照以下步骤执行。

select * from information_schema.innodb_lock_waits; #锁等待的信息,可以看到堵塞和被堵塞者
看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

注意:超过锁定等待超时后,此条记录会消失,也就是说正在阻塞的记录在此表才能查看到。

select * from information_schema.innodb_trx; # 查询锁事务状态信息
看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

注意:查询出死锁后,得到trx_mysql_thread_id死锁的id。

kill sessionId; # 杀掉有问题的sessionkill 15; kill 16;再次执行select * from information_schema.innodb_trx; # 查询锁事务状态信息
看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

注意:确认此表是否存在锁事务记录,如果没有则说明死锁问题已经解决。

四、如何避免死锁对于数据库的多表操作时,尽量按照相同的顺序进行处理,尽量避免同时锁定两个资源,如操作A和B两张表时,总是按先A后B的顺序处理, 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源。所有的update和delete操作必须走唯一索引SQL语句中不要使用太复杂的关联多表的查询;使用“执行计划”对SQL语句进行分析,对于有全表扫描的SQL语句,建立相应的索引进行优化。把SELECT放在Update语句前避免事务中的用户等待交互

免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法 https://www.dachanpin.com/a/cyfx/11417.html

(0)
上一篇 2023-05-12 03:17:30
下一篇 2023-05-12 03:18:32

相关推荐

  • 江西万通:给别人打工没前途,不如学门技术创业当老板!

       打工不如自己开店当老板,这是越来越多人的想法,打工不但要受到公司企业各种规章制度的约束,在获得经济报酬方面,也远远不能和自主创业相比。创业或许很累,但起码它让你经济独立,给予你安全感;学的技术或许没那么完美,但是它将是陪你走过风雨难捱的日子。   2020年年初,受新型冠状病毒疫情的影响,大部分的打工者都被困在家中没有收入来源,但生活支出仍在…

    2023-05-12
    80
  • 详解版来了!吉林省十三条就业新政会带来哪些红利?权威解答….

    (十)实施企业人力资源管理人员素质提升工程。鼓励人力资源服务机构、人力资源服务行业协会组织企业人力资源高级管理人员赴全国知名高校、知名企业培训交流,学习借鉴先进经验;组织开展企业人力资源管理人员专项培训,提升企业人力资源开发管理整体水平,助推企业发展。 原标题:详解版来了!吉林省十三条就业新政会带来哪些红利?权威解答…… 今天上午,吉…

    2023-05-13
    79
  • 深圳创新创业大赛第三届国际赛人工智能专业决赛圆满结束

      4月9日,中国深圳创新创业大赛第三届国际赛人工智能专业决赛在星河·领创天下圆满落幕。   来自西班牙马德里、澳大利亚悉尼、等7个分站赛区的12个优质项目参赛。参赛选手们就各自项目进行了路演和答辩,精彩的讲解一次次获得现场观众的热烈掌声,参赛选手的科技见解不断刷新现场观众对人工智能的科技认知。 2019年04月15日 10:27 来源:本站综合 深圳创新创…

    2023-05-13
    69
  • 苏宁零售云大会派818福利,80后创业青年会上分享致富经验

    8月8日,主题为“智慧赋能 创富未来”的苏宁零售云合作伙伴大会在南京苏宁总部举行,苏宁集团高管、供应商高层代表、零售云合作伙伴代表以及咨询公司等一同见证了这一盛会。   会议其中一部分重要内容,就是介绍了当下苏宁零售云的发展状况。尤其是县镇市场的零售云门店,如今已经是县镇市场里不可或缺的一个角色。   不少县镇的年轻创业者,正是看准了智慧零售这个行业趋势,成…

    创业分享 2023-05-12
    115
  • 云南新锐知商杨浩:创业艰难百战多

      “我要是有机会做企业,也不会差”,90年代中后期,乡镇企业家的一句玩笑话,让端了二十几年“铁饭碗”的杨浩萌生了创业的念头,并选择了近年来才兴起的蓝莓种植业,一步一步地走上成功之路。   此前,由汇桔网主办的2017知商服务中国行高峰论坛在云南昆明隆重举行,来自知识产权界、企业界、学术界、媒体界等大咖以及全国的800多名知商欢聚一堂,共襄知商盛事。汇桔网董…

    创业分享 2023-06-06
    162

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信