2017-07-12 18 views
0

私はdjangoアプリケーションにpostgresqlを使用しています。 ほぼ500000行の削除を管理しましたが、DBのサイズが大幅に低下しませんでした。 lots.objects.filter(id__in=[ids]).delete()のようなsmthでそれらを削除しました(1つのクエリで非常に多くの行を削除することが難しいため)。Djangoはdb_indexを削除しますか?

一部の列にはdb_index=Trueが含まれているため、インデックスは削除されませんでした。 削除されたオブジェクトのインデックスもdjangoから削除する可能性はありますか? Djangoから未使用のインデックスを見る方法もありますか?

答えて

0

これはDjangoとは関係ありません。アイテムがデータベースから削除された場合、アイテムは常に自動的にすべてのインデックスから削除されます。そうでない場合、インデックスは機能しません。

通常、Postgres自体にデータベースファイルのサイズを決定させる必要があります。削除されたアイテムは、VACUUM操作が完了すると削除されます。通常、Postgresは定期的にスケジュールされたデーモンを通してこれを行います。スペースを特別に回復する必要がある場合は、手動でVACUUMを実行できます。 the docsを参照してください。

+0

「削除」メソッドを使用した後にスペースが回復しないのは「大丈夫です」ということです。それはポストグルに関するすべてです。削除後約12時間が経過しました。 – Snobby

関連する問題