是否有必要对SQLite3数据库进行抽真空以防止数据丢失?

时间:2016-01-21 11:27:01

标签: postgresql sqlite vacuum

在PostgreSQL中它是necessary to vacuum periodically to prevent data loss of very old data due to transaction ID wraparound。我担心数据丢失可能是SQLite3数据库的一个问题,如果它们没有经常进行真空吸尘。

此外,SQLite3数据库的工作负载是否重要?我目前正在考虑在几种情况下使用SQLite3,包括:

  • 作为人们可以共享文件并在不同机器上使用它们的程序的文件格式
  • 存储应用程序设置
  • 存储可能每秒记录多次的应用程序的日志(可能每小时对最近的数据进行一次查询)

更新和删除的频率也很重要吗?

1 个答案:

答案 0 :(得分:1)

VACUUM

  • 删除碎片,因此当您同时进行大量删除和插入时,它会有所帮助,会扫描整个表的许多只读查询,并且
  • 释放未使用的页面,因此当您删除大量数据并且之后插入的数量非常少时,它会有所帮助。

但这些仅仅是优化。 碎片通常只对旋转磁盘有影响,除非你的空间不足,否则不需要释放空间。

SQLite使用不同的事务锁定机制(更简单,更快速,但不可扩展)并且不需要维护。