Cal*_*pau 3 sqlite premature-optimization vacuum
假设我定期将数据插入 SQLite 数据库,然后清除前 50% 的数据,但我不清理。
我现在是否有文件前 50% 的页面清零之类的内容?如果我添加另一批数据,我是否会填写那些清零的页面?
手册提到了数据碎片:
频繁的插入、更新和删除可能会导致数据库文件变得碎片化 - 单个表或索引的数据分散在数据库文件中。
VACUUM 确保每个表和索引在很大程度上连续存储在数据库文件中。在某些情况下,VACUUM 还可以减少数据库中部分填充的页数,从而进一步减小数据库文件的大小。
但这并不表明这必然会导致性能下降。它主要暗示了可以通过吸尘来节省浪费的空间。
严格连续页面中的数据是否有明显的性能提升?我可以期望具有大量碎片数据的数据库获得“糟糕”的性能吗?
SQLite 自动重用空闲页面。
仅当出现以下情况时,碎片页面才会导致性能下降:
只有一种方法可以确定您的应用程序是否属于这种情况:测量它。
| 归档时间: | 
 | 
| 查看次数: | 3287 次 | 
| 最近记录: |