2016-09-16 1 views
0

私は私のPostgresサーバへのMATLABからオープン接続を持っていたし、最後のクエリは、私が使用して、データベース・サーバー上のプロセスを見たときの状態idleを持っていたinsert into table_name ...、だった:このアイドル状態のクエリは、私のユニークなインデックス作成コマンドをロックアップさせましたか?

SELECT datname,pid,state,query FROM pg_stat_activity; 

私はユニークを作成しようとしましたインデックスがtable_nameで、非常に長い時間がかかっていましたが、pgadminプロセスのCPU使用率は分かりませんでした。 Matlabから接続を終了すると、クエリはpg_stat_activityから抜け出し、ユニークなインデックスがすぐに作成されました。

インデックスを作成するのに時間がかかったのはなぜですか?

答えて

2

いいえ、セッションは状態“アイドル”にはロックを保持せず何もブロックできません。トランザクション”でアイドル状態にあるのは“です。セッションは長い間ロックを保持する傾向があるため、通常は問題です。このようなセッションは、ほとんどの場合、アプリケーションのバグが原因です。

このような問題を調べるには、ビューpg_locksを参照してください。ぶら下げのCREATE INDEXステートメントは通常、索引付けする表のACCESS EXCLUSIVEロックの取得をハングします。 granted列の値がFALSEで、pg_locksであることがわかります。問題のテーブルにどのバックエンド(pid)がロックされているのかを把握して、あなたには犯人がいます。

関連する問題