是否有必要清理 SQLite3 数据库以防止数据丢失?
Is it necessary to vacuum a SQLite3 database to prevent data-loss?
在 PostgreSQL 中是 necessary to vacuum periodically to prevent data loss of very old data due to transaction ID wraparound。我担心数据丢失也可能是 SQLite3 数据库的一个问题,如果它们没有定期清理的话。
此外,SQLite3 数据库所承受的工作负载是否重要?我目前正在考虑在一些场景中使用 SQLite3,包括:
- 作为程序的一种文件格式,人们可以在其中共享文件并在不同的机器上使用它们
- 存储应用程序设置
- 为可能每秒记录多次的应用程序存储日志(对最近数据的查询可能每小时执行一次)
更新和删除的频率也很重要吗?
- 消除了碎片,因此当您有大量删除和插入、 和 许多扫描整个表的 read-only 查询时,它会有所帮助,并且
- 释放未使用的页面,因此当您删除大量数据并且之后插入的数据很少时,它会有所帮助。
但这些只是优化。
碎片通常只对旋转磁盘有影响,释放 space 是不必要的,除非你 运行 超出 space.
SQLite 使用不同的事务锁定机制(更简单、更快,但不可扩展)并且不需要维护。
在 PostgreSQL 中是 necessary to vacuum periodically to prevent data loss of very old data due to transaction ID wraparound。我担心数据丢失也可能是 SQLite3 数据库的一个问题,如果它们没有定期清理的话。
此外,SQLite3 数据库所承受的工作负载是否重要?我目前正在考虑在一些场景中使用 SQLite3,包括:
- 作为程序的一种文件格式,人们可以在其中共享文件并在不同的机器上使用它们
- 存储应用程序设置
- 为可能每秒记录多次的应用程序存储日志(对最近数据的查询可能每小时执行一次)
更新和删除的频率也很重要吗?
- 消除了碎片,因此当您有大量删除和插入、 和 许多扫描整个表的 read-only 查询时,它会有所帮助,并且
- 释放未使用的页面,因此当您删除大量数据并且之后插入的数据很少时,它会有所帮助。
但这些只是优化。 碎片通常只对旋转磁盘有影响,释放 space 是不必要的,除非你 运行 超出 space.
SQLite 使用不同的事务锁定机制(更简单、更快,但不可扩展)并且不需要维护。