SQLite吸尘/碎片和性能下降

时间:2014-11-08 00:21:06

标签: sqlite vacuum premature-optimization

让我们说我会定期将数据插入到SQLite数据库中,然后清除前50%的数据,但我不会真空。

我现在为文件的前50%设置了清零页面吗? 如果我添加另一批数据,我是否填写了那些归零的页面?

手册提到数据碎片:

  

频繁的插入,更新和删除可能导致数据库文件碎片化 - 单个表或索引的数据散布在数据库文件周围。

     

VACUUM确保每个表和索引在很大程度上连续存储在数据库文件中。在某些情况下,VACUUM还可以减少数据库中部分填充页面的数量,从而进一步减小数据库文件的大小。

但它并没有表明必然会因此而降低性能。 它主要暗示浪费的空间可以避免吸尘。

严格连续页面中的数据是否有明显的性能提升? 我可以期待"可怕的"具有大量碎片数据的数据库的性能?

1 个答案:

答案 0 :(得分:3)

SQLite会自动重用免费页面。

仅当

时,碎片页面才会导致性能下降
  • 数据量太大,无法缓存,
  • 您的存储设备的搜索速度相对较慢(例如硬盘或便宜的闪存设备),
  • 您经常访问数据,差异很重要。

只有一种方法可以确定您的应用是否适用:测量它。