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

一、什么是死锁

加锁(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)
HashMap详解
上一篇 2023-05-12 03:17:30
看懂这篇文章,你就懂了Mybatis的二级缓存
下一篇 2023-05-12 03:18:32

相关推荐

  • 浙江揭牌两岸青年创业基地 “摆渡”台青大陆创业梦

    图为揭牌仪式现场。 何蒋勇 摄 图为揭牌仪式现场。 何蒋勇 摄   中新网杭州9月20日电 (记者 施佳秀)“杭州已经可以说是一线城市、国际化城市了,市场的发展前景(好),竞争力比较高,台湾学生来这边(就业创业)相比去其他省份更有机会。”来自台湾的浙江大学大四学生吴宛庭20日于浙江杭州如是说。   当日,台湾大学生实习就业创业对接会暨杭州智新泽地-浙江互联网…

    创业分享 2023-05-28
  • 疫情期间,中小企业难题不断该怎么办?市妇联推出在线系列课程,

    相关文章 推荐文章 排行榜 疫情期间,中小企业难题不断该怎么办?市妇联推出在线系列课程,为女性创业者出谋划策! 日期:2020年03月02日 19:04:06 作者:占悦 自新型冠状病毒肺炎疫情发生以来,中小企业在经营和发展中遇到许多困难,创业者面临着挑战。为帮助和服务更多女性创业者,市妇联与上海启迪之星在三八国际妇女节期间推出“沪助她创·疫路同行”上海市中…

    2023-05-11
  • 16战机误射自己人

    网络上所表达出来的东西有时候就是情绪化,甚至有很大的偏颇,但这是网络生态的一种必然组成部分。如果把这些东西都“坚壁清野”,那就是一片死寂,我们党倡导的生动活泼的社会格局在网络上就无法体现出来,这有悖于我们党在网络治理方面的初衷。  挪威空军F-16战机误射自己人 飞天梦,作为华夏儿女几千年的追逐,是中国梦的重要部分。自今年起,国家将每年的4月24日…

    创业分享 2023-05-30
  • 麦达公开课|互联网时代的SaaS公司如何进行渠道建设?

      文章摘要:“渠道为王”还是“直销为王”暂且不论,渠道和是直销都是营销方法,方法没有成王败寇,那要看和企业合不合适,企业会不会用。本文讲一讲互联网时代适合做渠道的SaaS公司如何进行渠道建设开拓市场。   撰文:T客汇 卿云   2016年中国SaaS企业级市场走过了高速发展的一年,但是和美国的差距还很大。奋起直追的中国,SaaS的机会必定不少,时势造英雄…

    创业分享 2023-05-23
  • 第三届中国(福建)女大学生(女科技工作者)创新创业大赛启动

    原标题:第三届中国(福建)女大学生(女科技工作者)创新创业大赛启动   近日,省妇联和省教育厅联合下发《通知》,决定即日起至5月在全省组织开展第三届中国(福建)女大学生(女科技工作者)创新创业大赛。大赛以“共赢创新,筑梦未来”为主题,旨在搭建女大学生、女科技工作者创新创业展示和服务平台,激励广大女大学生、女科技工作者积极投身双创热潮。   参赛对象为准备创业…

    创业分享 2023-05-20

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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