1

たとえば、SQLite データベースに定期的にデータを挿入し、データの最初の 50% を消去するとしますが、バキュームは行いません。

今、ファイルの最初の 50% をゼロにしたページのようなものはありますか? データの別のバッチを追加すると、それらのゼロ化されたページに入力されますか?

マニュアルでは、データの断片化について言及しています。

挿入、更新、および削除を頻繁に行うと、データベース ファイルが断片化する可能性があります。つまり、単一のテーブルまたはインデックスのデータがデータベース ファイルに散らばっています。

VACUUM は、各テーブルとインデックスの大部分がデータベース ファイル内に連続して格納されるようにします。場合によっては、VACUUM はデータベース内の部分的に埋められたページの数を減らし、データベース ファイルのサイズをさらに減らすこともあります。

ただし、これによって必ずしもパフォーマンスが低下することを示すわけではありません。それは主に、掃除機をかけることで節約できる無駄なスペースをほのめかしています。

厳密に連続したページのデータで顕著なパフォーマンスの向上はありますか? 断片化されたデータがたくさんあるデータベースに「ひどい」パフォーマンスを期待できますか?

4

1 に答える 1

4

SQLite は空きページを自動的に再利用します。

断片化されたページが原因でパフォーマンスが低下する可能性があるのは、次の場合のみです。

  • データ量が多すぎてキャッシュできない
  • ストレージ デバイスのシークが比較的遅い (例: ハードディスクや安価なフラッシュ デバイス)。
  • 違いが問題になるほど頻繁にデータにアクセスします。

これがアプリケーションに当てはまるかどうかを確認する唯一の方法は、測定することです。

于 2014-11-08T09:37:02.580 に答える