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

一、什么是死锁

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

相关推荐

  • 临淄创业孵化基地举行经验分享会 “创客”面对面

    齐鲁网版权与免责声明 1、山东广播电视台下属21个广播电视频道的作品均已授权齐鲁网(以下简称本网)在互联网上发布和使用。未经本网所属公司许可,任何人不得非法使用山东省广播电视台下属频道作品以及本网自有版权作品。 2、本网转载其他媒体之稿件,以及由用户发表上传的作品,不代表本网赞同其观点和对其真实性负责。 3、如因作品版权和其它问题可联系本网,本网确认后将在2…

    创业分享 2023-05-24
    98
  • 看搜电共享充电宝如何助力大众创业!

    第四、市场价1200元的搜电共享充电宝八宝,充电宝日收入32元,1.5个月即可回本,年利润可达1.2万; 2017年4月四川成都郭小姐离职后,决定开一家火锅店。投入42万,不久,她的特产海鲜火锅开张了。因为火锅店的主营业务是深海鱼,购买成本高,所以价格普遍偏高。在像成都这样的火锅大城市里,对于那些习惯了麻辣烫的四川人来说,接受海鲜食品本身是一个挑战,更不用说…

    2023-05-12
    146
  • 中山约有60家创新创业孵化器,如何运营生花?

    中山约有60家创新创业孵化器,如何运营生花? 位于盛景尚峰的众创空间办公场所外景。 4月28日,由市科技局和中国银行中山分行主办的中山市高企管理体系宣讲会暨创新项目路演对接会将在中山美居产业园举行。这是我市四大组团路演的第一站,接下来东部组团、西北组团以及南部组团也将进行项目集体路演。   1987年中国诞生了第一个科技企业孵化器—武汉东湖创业服务中心。经过…

    创业分享 2023-05-24
    190
  • 网友眼中越老越吃香的行业到底是什么?

    越老越吃香的行业,一直都是被热议的话题。对于年轻人来说,找到一个适合自己的并且具有前景的工作,不是一件容易的事情。 最近,黑马君就看到有人在平台上问相关的问题,抱着认真看一看的态度点进去,却差点被热评第一闪到老腰。 热评第一是:电焊,因为眼前会一片光明。(不得不说,自古评论区出人才,实在是佩服网友们的脑洞。) △ 图来源脉脉,如侵删 相比于越来越吃香的行业,…

    2023-05-12
    82
  • 如何选择一个投资创业好项目

        投资者找项目做投资,如果没有很好的人脉资源,那么上网寻找信息便是最直接、便捷的渠道。但是现在一打开电脑,项目信息铺天盖地让人手足无措,而且大部分信息的真实性也相当值得怀疑。     有没有什么方法能够帮助上述投资者在较短时间内找到比较合适的投资项目,又避免网上虚假信息的侵…

    创业分享 2023-05-12
    123

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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