web-dev-qa-db-ja.com

テーブルの削除に時間がかかりすぎる

約のテーブルがあります。 2億行(約0.5 TB)でドロップしたいのですが、非常に時間がかかります。

2日間稼働しています。これは、ロールバック機能が原因だと思います。

このプロセスをスピードアップできるように、ロールバック機能を回避する方法はありますか?テーブルを削除したいのは、そこにあるデータにはもう価値がないからです。

5
Pelle G

実行中のバックエンドをリストすることができます

_SELECT * FROM pg_stat_activity;
_

このテーブルで動作している何かをロールバックしようとしているプロセスを特定します。

そのpidを見つけます。

クエリSELECT pg_terminate_backend(64738)を使用してバックエンドを終了できます。ここで、64738は以前のSELECTのpid列です。

その後、おそらくそのテーブルをDROPできます。

それでもうまくいかない場合は、postgresqlを再起動しますが、おそらく再起動します。