PostgreSQL死锁案例分析(二)
2019-09-27 08:00
2056 查看
问题现象
2019-09-01 21:01:08.359 CST [1482] ERROR: deadlock detected
2019-09-01 21:01:08.359 CST [1482] DETAIL: Process 1482 waits for ShareLock on transaction 523; blocked by process 1610.
Process 1610 waits for ShareLock on transaction 524; blocked by process 1482.
Process 1482: select test2.a,test2.b,test2.c from test2 join test1 on test2.a = test1.a where test2.b = 2 and test1.c = 3 for update;
Process 1610: delete from test1 where a = 1;
2019-09-01 21:01:08.359 CST [1482] HINT: See server log for query details.
2019-09-01 21:01:08.359 CST [1482] CONTEXT: while locking tuple (0,1) in relation "test1"
2019-09-01 21:01:08.359 CST [1482] STATEMENT: select test2.a,test2.b,test2.c from test2 join test1 on test2.a = test1.a where test2.b = 2 and test1.c = 3 for update;
流程梳理
create table test1(a int primary key, b int, c int);
create table test2(a int references test1 on delete cascade,b int, c int);
insert into test1 values(1,2,3),(2,3,4),(3,4,5);
insert into test2 values(1,2,3),(2,3,4),(3,4,5);
test = table_tuple_lock(erm->relation, &tid, estate->es_snapshot,
markSlot, estate->es_output_cid,
lockmode, erm->waitPolicy,
lockflags,
&tmfd);
进一步分析
总结
相关文章推荐
- PostgreSQL死锁案例分析
- MySQL批量更新死锁案例分析
- java中线程的同步和死锁案例分析
- 2016-08-19-java-关于线程的死锁的案例分析:生产者消费者问题
- [转]MySQL批量更新死锁案例分析
- MySQL并发引起的死锁案例分析
- MySQL批量更新死锁案例分析
- MySQL死锁案例分析与解决方案
- MySQL批量更新死锁案例分析
- 死锁案例分析
- 牛人笔记----(死锁案例分析)
- MySQL批量更新死锁案例分析
- GCD线程死锁解锁案例分析
- 使用Jvisualvm监控线程死锁案例分析
- MySQL批量更新死锁案例分析
- 模拟死锁及案例分析
- 真实案例:使用Java Thread Dump分析ReadWriteLock导致的死锁问题
- 令人无法理解的死锁案例分析
- 心得3--由售票系统中的抢票机制解说同步线程及死锁案例分析
- SQLServer死锁案例分析