この Firefox のバグで参照されているように、データベースをバキュームする行為は何を達成しますか? この操作は最新のすべてのデータベース ソフトウェアでサポートされていますか、それとも特定のデータベース ソフトウェアのみでサポートされていますか?
5 に答える
MVCCを使用してトランザクションを相互に分離するデータベースでは、テーブルを定期的にスキャンして、古い行のコピーを削除する必要があります。MVCC では、行が更新または削除された場合、行の古いバージョンをまだ参照できるアクティブなトランザクションが存在する可能性があるため、行をすぐにリサイクルすることはできません。そうであるかどうかを確認するのは非常にコストがかかる可能性があり、代わりに古い行が関連性を維持していると見なされます。スペースを再利用するプロセスは、テーブルがバキュームされるまで延期されます。これは、データベースに応じて、自動的または明示的に開始できます。
具体的には、SQL lite バキューム コマンドを参照しています。 http://www.sqlite.org/lang_vacuum.html
DELETE ステートメントから残ったスペースを削除しています。
「vacuumdb」は MySQL、sqlite、および PostgreSQL にあります。Postgres では、vacuumdb は、削除された行によって占められているスペースを特定し、将来の使用のためにカタログ化します。'vacuum full' は、より包括的な検査を行い、レコードを新しく作成されたスペースに移動します。
ファイルシステムの最適化に非常に似ています。詳細については、PGSQL ドキュメントを参照してください。