代码之家  ›  专栏  ›  技术社区  ›  Tim Post Samir J M Araujo

sqlite3 auto_vacuum pragma有缺点吗?

  •  2
  • Tim Post Samir J M Araujo  · 技术社区  · 15 年前

    我正在使用一个sqlite3数据库,这个数据库可能会变得相当大。存储空间是一个问题,所以我正在考虑将auto-vacuum pragma设置为on,这样被删除行占用的空间将被实际释放,而不是仅仅标记为可供重用。

    在我的场景中,数据库可以每月增长数百MB,而超过~6个月的行将以粒度形式衰退。这是通过一个作业队列来实现的,该队列随机附加删除当前任务之外的最旧记录的任务,其中,nn由队列中有多少高优先级任务决定。

    我希望这样可以避免在每次几毫秒内就可以实现这一点的情况下,编写导致长时间的读写不足(以分钟为单位,删除行,然后运行真空)的维护作业。这可能意味着“旧”行在数据库中的保留时间比原来长了几天,但这是可以接受的折衷。

    我的问题是,根据你的经验(也许是你的观点),根据我的描述,开启自动吸尘器是一个不可接受的妥协吗?如果是,原因是什么?我没有广泛使用sqlite3,更不用说它提供的用于调整的各种实用主义,所以我希望在做出判断之前征求我所缺乏的经验,我可能会在几个月后后悔:)

    我使用的是C接口,如果有什么区别的话。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Ignacio Vazquez-Abrams    15 年前