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

一、什么是死锁

加锁(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

相关推荐

  • 经管学院与中信证券江苏省分公司共建大学生就业创业实践基地

    资讯 | 经管学院与中信证券江苏省分公司共建大学生就业创业实践基地 2019-12-28 20:48 来源:南京航空航天大学经管学院 原标题:资讯 | 经管学院与中信证券江苏省分公司共建大学生就业创业实践基地 为了进一步深化校企合作,发挥校企协同育人职能,12月25日, 经济与管理学院党委副书记涂志宏、 副院长邓晶、 金融专业学科负责人段进东、 毕业班辅导员…

    创业分享 2023-05-12
    217
  • 长跑运动员白厚增的创业经:如何用15年开创运动营养大产业

      创业也类似,其结果是不确定的。但准备充分,快速到位的执行力,是必要的基础。创业过程,总让人战战兢兢,却也要信心满满,斗志昂扬。“很多人喜欢跑步,但如果要变成优秀的选手,甚至想拿冠军,就需要付出超出常人的代价,同时还要有一些天赋。创业也如此。”白厚增说。   最近两年移动互联网浪潮袭来,他体会到创业的丰收喜悦。长期重研发、重科技的康比特牢牢占据专业运动员市…

    创业分享 2023-05-31
    158
  • 滁州市老科协领导调研市创业中心双创工作开展情况

    12月9日下午,滁州市政协原主席胡成功率领扬子集团原董事长缪瑞荣、市广电局原局长许绍稳等市老科协专家团队来到市创业中心调研双创工作开展情况。 胡成功一行在市创业中心主任卢少悟的陪同下,详细了解了市创业中心的发展历程、配套设施、扶持政策、孵化业绩等发展情况,实地走访了“清华启迪之星(滁州)基地”、“ 安徽天地汇网商孵化器”等落户市创业中心的新型众创机构,现场观…

    创业分享 2023-05-26
    123
  • 全国第一家女性创业实验基地 天津妇女创业服务中心

      天津北方网讯:2000年10月18日,全国第一家女性创业实验基地——天津妇女创业服务中心在河东区成立。天津妇女创业服务中心是下岗女工再就业与创业项目的重要内容之一,该项目是1998年由联合国开发计划署、澳大利亚国际发展署援助,中国国际技术交流中心代表中国政府批准执行的城市扶贫项目。这是我国首次将孵化器概念引入城市就业与创业领域,也是孵化器概念在我国女性创…

    创业分享 2023-05-23
    234
  • 德州庆云云游小镇现真容 苏宁精选店老板吐露创业心声

    ①凡注明”来源:XXX(非在线)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,本网不承担此类稿件侵权行为的连带责任。 ②本站所载之信息仅为网民提供参考之用,不构成任何投资建议,文章观点不代表本站立场,其真实性由作者或稿源方负责,本站信息接受广大网民的监督、投诉、批评。 ③本站转载纯粹出于…

    创业分享 2023-05-13
    125

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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