6

PostgreSQL 9.2と、作業中のWebサイトのシードデータが少し含まれている小さなデータベースがあります。

次のクエリは永久に実行されるようです。

ALTER TABLE diagnose_bodypart ADD description text NOT NULL;

diagnose_bodypart10行未満のテーブルです。クエリを1分以上実行しても、結果は得られません。何が問題なのですか?これをデバッグするための推奨事項はありますか?

4

1 に答える 1

6

列を追加する場合、テーブルを書き換える必要はありません(を指定しない限りDEFAULT)。ロックがなくても簡単に操作できます。クレイグが指摘したように、pg_locksはチェックする場所です。

一般に、最も可能性の高い原因は、実行時間の長いトランザクションです。私は、これらのテーブルにどのようなワークフローがヒットしているか、およびトランザクションが開いたままになっている期間を調べています。この種のロックは通常トランザクションであるため、トランザクションをコミットすると通常問題が解決します。

于 2013-04-23T14:55:11.647 に答える