数据库死锁及解决方法
来源:互联网 发布:程序员要懂软件架构吗 编辑:程序博客网 时间:2024/05/22 15:59
死锁的概念:
死锁是指两个或者两个以上的事务在执行过程中,因争夺锁资源而造成的一种互相等待的现象。
死锁的处理机制:
解决死锁最有用最简单的方法是不要有等待,将任何等待都转化为回滚,并且事务重新开始。但是有可能影响并发性能。
- 1:超时回滚,即当两个事务互相等待时,当一个等待时间超过设置的某一阀值的时候,其中一个事务进行回滚,另一个事务就能继续进行。在InnoDB引擎中,参数innodb_lock_wait_time用来设置超时的时间。
- 2:wait-for-graph方法:跟超时回滚比起来,这是一种更加主动的死锁检测方式。InnoDB引擎也采用这种方式。
wait-for graph图:
这种方式一般要求数据库保存一下两种信息:锁的信息链表和事务等待链表。通过这两条链表可以构造出一张图,而在这个图中若存在回路,就代表存在死锁,因此资源间互相发生等待。在wait-for graph中,事务为图中的节点。而在图中,事务T1指向T2边的定义为:
- 事务T1等待事务T2所占用的资源
- 事务T1最终等待T2所占用的资源,也就是事务之间在等待相同的资源,而事务T1发送在事务T2的后面。
示例:
从wait-for graph图中我们可以发现存在回路(t1,t2),因此存在死锁。
0 0
- 数据库死锁及解决方法
- 数据库死锁及解决方法
- 数据库死锁解决方法
- Oracle数据库死锁解决方法
- oracle数据库死锁解决方法
- sQL死锁及解决方法
- db2 数据库死锁的解决方法
- I2C死锁原因及解决方法
- I2C死锁原因及解决方法
- 【多线程】多线程死锁及解决方法
- I2C死锁原因及解决方法
- sqlserver 死锁原因及解决方法
- I2C死锁原因及解决方法
- I2C死锁原因及解决方法
- I2C死锁原因及解决方法
- I2C死锁原因及解决方法
- java-死锁现象及解决方法
- 数据库死锁及解决死锁问题
- 浅析 Linux 初始化 init 系统: Systemd(2)
- JAVA爬虫初识之httpclient与jsoup
- CentOS服务器安装内容
- OpenCV学习之矩阵图像处理(三)
- Java NIO服务器:远程主机强迫关闭了一个现有的连接
- 数据库死锁及解决方法
- 酒店、出行等日期的选择
- Activity Intent Flags及Task相关属性
- 会话管理 Cookie&session
- 使用awk批量杀进程的命令
- [Caffe]:关于Check failed: shape[i] >= 0 (-2 vs. 0)错误
- 19.Remove Nth Node From End of List
- IE 播放wav文件
- HDU 1325 Is It A Tree?(判断是否为树)