查询来检查的Postgres

查询来检查的Postgres

问题描述:

我要检查是否死锁清除或不Postgres的和ORACLE的系统表表的僵局状态。查询来检查的Postgres

请建议我如何检查僵局状态。

+0

你的问题没有任何意义。没有这种“表格的死锁状态”。单个表可以**不会**有“死锁”。死锁**总是**涉及至少两个_transactions_ - 然后会话/事务处于死锁状态,而不是“表”。 –

+0

如果你没有修改'deadlock_timeout'然后计数,直到一个Missisipi和瞧 - 它被“清除” –

死锁不流连,尽快的Postgres或Oracle发现死锁将中止交易之一。这是因为如果没有干预,僵局本身就不会取得进展。

你可以做的是看在系统中存在哪些正常锁多久,他们一直在那里。

锁被保持很长一段时间可能表明慢跑交易,或代码,是不是在正确的地方犯等

长时间锁住也增加死锁会在未来发生的可能性。

Postgres的

您可以通过pg_locks视图的做到这一点。

PostgreSQL的维基有一个网页约在https://wiki.postgresql.org/wiki/Lock_Monitoring

看锁和pg_locks视图的在https://www.postgresql.org/docs/current/static/view-pg-locks.html

甲骨文描述

Oracle还提供的视图来显示当前的锁,但它们使用起来更复杂一些。

的介绍,请http://www.dba-oracle.com/t_grid_rac_db_locks_latches.htm

参考在https://docs.oracle.com/cd/E11882_01/server.112/e40402/dynviews_2027.htm#REFRN30121

在这两种情况下,虽然你将需要花一点时间确定你的锁通常不会实际持有之后是什么在整个表上,所以表格的不同部分可能会同时通过不同的交易锁定它们。此外,它不只是表格会出现在这些意见。

类似地,不同的锁类型(共享的,独占的,等)将阻止不同类型的并发活动的。