美文网首页简友广场
数据库死锁和操作系统中的死锁

数据库死锁和操作系统中的死锁

作者: 一只不会南飞的燕 | 来源:发表于2020-04-13 21:52 被阅读0次

要想知道数据库中的死锁是什么原因首先要有这个数据库知识基础:如果“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。锁定发生在一个事务获得对某一资源的“锁”时,这时,其他的事务就不能更改这个资源了,这种机制的存在是为了保证数据一致性。

数据库产生死锁的原因:

       1.事务之间对资源访问顺序的交替

        一个用户A 访问表A(锁住了表A),然后又访问表B;另一个用户B 访问表B(锁住了表B),然后企图访问表A;这时用户A由于 用户B已经锁住表B,它必须等待用户B释放表B才能继续,同样用户B要等用户A释放表A才能继续,这样死锁就产生了。

       2.并发修改同一记录

       用户A查询一条纪录,然后修改该条纪录;这时用户B修改该条纪录,这时用户A的事务里锁的性质由查询的共享锁企图上升到独占锁,而用户B里的独占锁由于A有共享锁存在所以必须等A释放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。这种死锁由于比较隐蔽,但在稍大点的项目中经常发生。 

     一般更新模式由一个事务组成,此事务读取记录,获取资源(页或行)的共享 (S) 锁,然后修改行,此操作要求锁转换为排它 (X) 锁。如果两个事务获得了资源上的共享模式锁,然后试图同时更新数据,则一个事务尝试将锁转换为排它 (X) 锁。共享模式到排它锁的转换必须等待一段时间,因为一个事务的排它锁与其它事务的共享模式锁不兼容;发生锁等待。第二个事务试图获取排它 (X) 锁以进行更新。由于两个事务都要转换为排它 (X) 锁,并且每个事务都等待另一个事务释放共享模式锁,因此发生死锁。

       3.索引不当导致全表扫描

       如果在事务中执行了一条不满足条件的语句,执行全表扫描,把行级锁上升为表级锁,多个这样的事务执行后,就很容易产生死锁和阻塞。类似的情况还有当表中的数据量非常庞大而索引建的过少或不合适的时候,使得经常发生全表扫描,最终应用系统会越来越慢,最终发生阻塞或死锁。

参考:https://blog.csdn.net/qq_16681169/article/details/74784193

操作系统中提到的死锁:

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

产生原因:

竞争资源引起进程死锁

可剥夺资源和不可剥夺资源

竞争不可剥夺资源

竞争临时资源

相关文章

  • oracle数据库死锁的检查方法

    转自:数据库死锁的检查方法 数据库死锁的检查方法 一、 数据库死锁的现象程序在执行的过程中,点击确...

  • 数据库死锁和操作系统中的死锁

    要想知道数据库中的死锁是什么原因首先要有这个数据库知识基础:如果“修改”一条数据,首先数据库管理系统会在上面加锁,...

  • 死锁

    在实际编程中,死锁虽然不常见,但是如果遇到死锁便是致命的。接下来了解一下《操作系统》对于死锁产生条件的描述。 死锁...

  • Java多线程之死锁(Deadlock)及死锁避免(Deadlo

    线程死锁(Thread Deadlock) 数据库死锁(Database Deadlocks) 死锁避免 (Dea...

  • 操作系统复习(自用)1

    2012级:操作系统 第一题是用英文解释概念 比如进程线程等等 还有死锁以及死锁检测和死锁预防算法 就是那个银行家...

  • Java 并发编程中的死锁 ( Kotlin 语言讲解)

    什么是死锁? 在操作系统中的并发处理场景中, 进程对资源的持有与请求过程中,会产生死锁.Say, Process ...

  • MySQL死锁、资源竞争死锁

    什么是MySQL死锁: 什么是资源竞争死锁: 比如连接池 ShardingSphere文档中写到关于 数据库连接的...

  • 第32节:通过performance_schema获取造成死锁的

    (本文由田兴椿编写) 数据库日常维护中我们经常遇到死锁的问题,由于无法获取造成死锁的事务内执行过的语句,对我们死锁...

  • 并发insert on duplicate key update

    前言 数据库死锁问题,是一个老生常谈且很常见的问题,网上也有非常多对于各类死锁场景的解析和复现,但凡和死锁有关,无...

  • 死锁

    第11章:死锁和进程通信 死锁概念 死锁处理方法 死锁预防(Deadlock Prevention) 死锁避免(D...

网友评论

    本文标题:数据库死锁和操作系统中的死锁

    本文链接:https://www.haomeiwen.com/subject/jyyomhtx.html