web-dev-qa-db-ja.com

Postgresqlテーブルのドロップに非常に長い時間がかかる

私はPostgresqlとサーバー管理に少し慣れていないので、これが正常な動作であるかどうかはよくわかりません。現在、カスケードオプションを使用してテーブルを削除しようとしています。

私が使ったコマンドは

DROP TABLE library_genre CASCADE;

約30分経ちましたが、まだ言っています

NOTICE:  drop cascades to constraint radio_logs_entry_genre_id_fkey on table logs_entry

データベースの大きさを確認する方法はよくわかりませんが、大きすぎるとは思えません。なんらかの破損が原因で時間がかかる可能性があると思いますか。

これを理解するための提案をいただければ幸いです。何が起こっているのかを理解するために、どのような種類のコマンドを使用する必要がありますか?

編集:新しい情報

テーブルを削除する前に行ったpg_dumpでこれを実行しました

du -k pg_dump_file

そして、それは私に27712を与えました。キロバイトの場合、27メガバイトしかなく、変更にそれほど時間がかからないようです。

#2を編集します。私はトップに走りましたが、postgresは実際にはCPUやメモリをあまり使用していないようです。

4
thebeagle

テーブルの削除は制約を介してカスケードされます-Postgresは、その参照テーブルの行を調べて、それらに対して何をする必要があるかを判断することに縛られている可能性があります。

処理を高速化するには、最初に制約を削除するか、削除するテーブルをTRUNCATEすることができます。

4
voretaq7