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 查询结果取交集的方法

mysql 无法成功启动服务怎么办

mysql中优化和修复数据库工具mysqlcheck详细介绍

安装mysql会死机怎么办

mysql约束概述

详细讲解mysql全局变量与局部变量

mysql用户密码如何重新设置?

access是数据库管理系统吗

mysql数据库事务transaction示例讲解教程

mysql多表关联更新

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


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

数据库系统概念 第6版

机械工业出版社

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



打赏

取消

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

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

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

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

评论

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