面试官:你能用SQL代码演示一个简单的死锁现象吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2851个文字,预计阅读时间需要12分钟。
文章首发于公众号:BiggerBoy有读者问:面试被问到怎么用SQL模拟数据库死锁?这位读者表示对Java中的死锁比较熟悉,但之前用SQL写死锁的案例还没遇到过,这个问题没有答案。
文章首发于公众号:BiggerBoy
有读者说面试被问到怎么用SQL模拟数据库死锁?
这位读者表示对Java中的死锁还是略知一二的,但是突然用SQL写死锁的案例之前还真没遇到过,这个问题没答上来。所以今天就带大家一起来看下怎么用SQL让数据库中产生死锁。
说到死锁,还是先来复习下什么是死锁吧。
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
数据库死锁是指两个资源互相等待,如果需要“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。锁定(Locking)发生在当一个事务获得对某一资源的“锁”时,这时,其他的事务就不能更改这个资源了,这种机制的存在是为了保证数据一致性。
数据库死锁示例好了,复习完回到今天的正题。
有如下两个事务:
事务1先执行SQL1,更新id=1的,然后执行SQL2,更新id=2的。
事务2恰恰相反,它先更新id=2的,再更新id=1的。
本文共计2851个文字,预计阅读时间需要12分钟。
文章首发于公众号:BiggerBoy有读者问:面试被问到怎么用SQL模拟数据库死锁?这位读者表示对Java中的死锁比较熟悉,但之前用SQL写死锁的案例还没遇到过,这个问题没有答案。
文章首发于公众号:BiggerBoy
有读者说面试被问到怎么用SQL模拟数据库死锁?
这位读者表示对Java中的死锁还是略知一二的,但是突然用SQL写死锁的案例之前还真没遇到过,这个问题没答上来。所以今天就带大家一起来看下怎么用SQL让数据库中产生死锁。
说到死锁,还是先来复习下什么是死锁吧。
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
数据库死锁是指两个资源互相等待,如果需要“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。锁定(Locking)发生在当一个事务获得对某一资源的“锁”时,这时,其他的事务就不能更改这个资源了,这种机制的存在是为了保证数据一致性。
数据库死锁示例好了,复习完回到今天的正题。
有如下两个事务:
事务1先执行SQL1,更新id=1的,然后执行SQL2,更新id=2的。
事务2恰恰相反,它先更新id=2的,再更新id=1的。

