数据库的死锁相关知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库的死锁相关知识相关的知识,希望对你有一定的参考价值。

死锁的定义

     死锁是指两个或两个以上的进程在执行的过程中,由于竞态资源或由于彼此通信而造成的一种阻塞现象。若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态,这些在互相等待的进程称为死锁进程。

数据库发生死锁的条件

1.资源不能共享。需要只能由一个进程或线程使用。

2.请求且保持。已经锁定的资源自己保持着不释放。

3.不剥夺。 自己申请的资源不能被别人剥夺。

4.循环等待。

想防止死锁只需将上述条件破坏:

(1)尽量避免并发的执行涉及到修改数据的语句。

(2)要求每个事务一次就将所有要用的加锁,否则不予执行。

(3)每个事务执行的时间不能太长,在业务允许的情况下,可以考虑将事务分割成几个较小的事务来执行。

(4)数据存储空间离散法。采用各种手段将逻辑上在一个表中的数据分散到若干个离散的空间上,以便改善对表的访问。

(5)将经常更新的数据库与查询数据库分割开来。

 

 

以上是关于数据库的死锁相关知识的主要内容,如果未能解决你的问题,请参考以下文章

复习多线程相关知识

复习多线程相关知识

复习多线程相关知识

知识的致命死锁,「少加点班」的社会实验

Mysql 死锁排查过程

Java 死锁相关的一道经典面试题