我有一个移动应用程序的同步过程,该交易在数据库上进行大量修改。由于这是在移动设备上完成的,因此我需要发出VACUUM命令来压缩数据库。
我想知道何时应该发出VACUUM命令:
- 在事务中,作为最后一个语句
- 或在事务之后?
我目前正在查找SQLite,但如果其他引擎不同,请在答案中告诉我(PostgreSQL、MySQL、Oracle、SQLServer)。
我有一个移动应用程序的同步过程,该交易在数据库上进行大量修改。由于这是在移动设备上完成的,因此我需要发出VACUUM命令来压缩数据库。
我想知道何时应该发出VACUUM命令:
我目前正在查找SQLite,但如果其他引擎不同,请在答案中告诉我(PostgreSQL、MySQL、Oracle、SQLServer)。
清空操作类似于碎片整理,如果您最近删除了很多内容,或者在插入了大量内容后,进行一次清空是很好的选择,但绝不能在每个事务中都这么做。它比几乎任何其他数据库命令都要慢,更像是一项维护任务。
我们有时会添加/删除大部分数据库文件,因此进行清空是一个不错的主意,但我仍然不认为它是执行该操作的同一事务的一部分。
这个交易是多频繁运行的?
这实际上是一个每日处理的过程,而不是一个逐个查询的过程,但如果您在没有完全使用它的情况下使用它,则可以在事务中使用它,因为它不会获取锁。
如果您要执行此操作,则应该将其放在事务之外,因为它与事务数据的完整性无关。