2017-10-12 1 views
0

PostgresとORACLEのシステムテーブルでデッドロックが解除されているかどうかをチェックしたいと思います。postgresのテーブルのデッドロック状態を確認するクエリ

デッドロックの状態を確認する方法を教えてください。

+0

あなたの質問は意味をなさない。 「テーブルのデッドロック状態」はありません。 1つのテーブルでデッドロックが発生することはありません**。デッドロック**は常に**少なくとも2つの_transactions_を含んでいます。そして、セッション/トランザクションはデッドロックされ、 "テーブル"ではありません。 –

+0

あなたが 'deadlock_timeout'を修正していない場合、Missisipiとvoilaが1つカウントされるまでカウントします - それは"クリア " –

答えて

0

デッドロックはハングしません.PostgresまたはOracleがデッドロックを検出すると、トランザクションの1つを中止します。デッドロックは、本質的に、介入なしには進まないためです。

あなたができることは、通常のロックがシステム内に存在するかどうか、そしてそこにいた時間を調べることです。ロングロックはまた、デッドロックが将来発生する可能性を高める開催

長時間保持しているロック遅い実行中のトランザクションを示している可能性があり、または正しい場所にコミットされていないコードなど

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

Oracleはまた、現在のロックを表示するビューを提供していますが、彼らは少し複雑です。あなたが実際に後のロックは、通常開催されていないとしているもの識別少し時間を費やす必要がありますけれども

イントロは、いずれの場合もhttps://docs.oracle.com/cd/E11882_01/server.112/e40402/dynviews_2027.htm#REFRN30121

で参照してhttp://www.dba-oracle.com/t_grid_rac_db_locks_latches.htm

で利用可能ですテーブル全体を一度に処理することができます。そのため、テーブルの異なる部分は、異なるトランザクションによって同時にロックされる可能性があります。また、これらのビューに表示されるテーブルだけではありません。

同様に、異なるロックタイプ(共有、排他など)は、異なるタイプの同時アクティビティをブロックします。

関連する問題