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

一、什么是死锁

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

相关推荐

  • 第二届粤港澳大湾区大学生创新创业项目对接洽谈活动正式启动

    第二届粤港澳大湾区大学生创新创业项目对接洽谈活动正式启动 4月13日下午,第四届中国“互联网+”大学生创新创业大赛广东省分赛暨第二届粤港澳大湾区大学生创新创业项目对接洽谈活动(以下简称项目对接活动)正式启动。省教育厅副巡视员邱克楠出席启动仪式,并就赛事活动的推进进行了部署动员。 4月13日下午,第四届中国“互联网+”大学生创新创业大赛广东省分赛(以下简称省赛…

    创业分享 2023-05-18
    104
  • 大学生创业 到春甜北京韩式半永久培训顶级化妆纹绣

      韩国半永久定妆培训加盟连锁创业,首选北京春甜半永久化妆纹绣培训学院!你是否正在寻找新的加盟创业致富商机?那么快来位于北京朝阳区双桥地铁站附近的春甜韩式半永久培训学校学习!国内韩式半永久化妆市场正处于快速扩大期,机遇无限,中国半永久行业排名最好的领导品牌北京春甜韩式半永久化妆培训学院将会给你一次人生华丽升级的绝佳机会!   又到了一年一度的火热招聘季,求职…

    创业分享 2023-05-30
    71
  • 百亿美元级外资大项目争相落地广东

    今年7月,德国巴斯夫集团决定投资100亿美元,在湛江建设全球第三大石化一体化基地。这是中国首例重化工行业外商独资项目。 从项目规模看,外资大项目持续增长,实际到资5000万美元以上的大项目74个,到资金额121亿美元,项目个数和金额分别增长34.5%和27.7%。 外商对粤投资的信心还源于广东不断推出务实改革措施的举动—— 9月,美国埃克森美孚公司宣布投资1…

    创业分享 2023-05-15
    121
  • 广西多渠道促进创业就业

    【支持民营企业在行动】浙商银行:多渠道加大对民企信贷投放 查看剩下100条评论 你可能会喜欢 据广西壮族自治区人力资源和社会保障厅数据显示,2018年广西城镇新增就业42.1万人,失业人员实现再就业10.14万人,累计新增就业岗位10.56万个。 写评论已有条评论跟帖用户自律公约 最新评论 据介绍,广西按照“政府搭台、团队导演、企业唱戏、社会共享”模式建设众…

    2023-05-13
    60
  • 专访卡比布中国区代理雨妈的创业故事

    (卡比布纸尿裤)   朋友的一番话可谓是“一语惊醒梦中人”,行动派的雨妈立即申请了淘宝店铺,并着手准备卡比布的代理事宜。“还记得那几年正值电子商务蓬勃发展时期,众多企业开始涌入线上销售,其中网店就是较为热门的渠道”,雨妈说:“我们就是运气好,赶上了第一波红利”。   因为宝宝与卡比布结下不解之缘 (卡比布纸尿裤)   雨妈是贵州婴乐树电子商务有限公司的负责人…

    创业分享 2023-05-23
    123

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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