mysql死锁的原因和处理方法是什么


本文摘自PHP中文网,作者醉折花枝作酒筹,侵删。

当多个事务同时持有和请求同一资源上的锁而产生循环依赖的时候就产生了死锁,解决方法为:1、用更低的隔离级别;2、以固定的顺序访问你的表和行;3、添加精心选定的索引到表中;4、使用更少的锁定。

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

当多个事务同时持有和请求同一资源上的锁而产生循环依赖的时候就产生了死锁。死锁发生在事务试图以不同的顺序锁定资源。以StockPrice表上的两个事务为例:

事务1

1

2

3

4

START TRANSACTION;

UPDATE StockPrice SET close = 45.50 WHERE stock_id = 4 and date = '2002-05-01';

UPDATE StockPrice SET close = 19.80 WHERE stock_id = 3 and date = '2002-05-02';

COMMIT;

事务 #2

1

2

3

4

START TRANSACTION;

UPDATE StockPrice SET high = 20.12 WHERE stock_id = 3 and date = '2002-05-02';

UPDATE StockPrice SET;

COMMIT;

如果不走运的话,每个事务都可以执行完第一个语句,并在过程中锁住资源。然后每个事务都试图去执行第二行语句,当时却发现它被锁住了。两个事务将永远的等待对方完成,除非有其他原因打断死锁。

阅读剩余部分

相关阅读 >>

介绍mysql buffer pool里的change buffer

mysql数据库服务器安装与配置教程

mysql中group_conca函数的如何修改其长度限制

mysql如何处理高并发

mysql 如何求数据的长度

mysql索引介绍

mysql中如何批量删除数据

mysql常用sql语句总结包含复杂sql查询

浅析mysql-server 与 mysql-client 的区别

mysql如何设置默认值

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...