【发布时间】:2015-08-25 23:33:48
【问题描述】:
我需要支持收缩数据输入率为每秒 1 个条目(约 300KB)的数据库。数据库文件可以达到3GB。当前数据库没有自动清理功能。数据库文件空间超过某个限制(比如 3GB)是最坏的情况。
我目前的策略是删除最旧的数据(通过集群主键),然后到 CHECKPOINT DEFRAG。这似乎不可靠,VACUUM 或 DEFRAG 可能需要很长时间。我不想命名数据库名称,但我愿意接受建议。
我想知道还有哪些其他策略可以可靠地(几乎没有停机时间,O(1) 运行速度)保留磁盘空间。
编辑:需要关系数据库作为报告和 SQL 数据提取。
固定大小的循环缓冲区——确切地说——我需要在关系世界中复制它,使用占用空间小的数据库和快速的“循环”行为(即快速插入)
【问题讨论】:
-
请列出一些要求。你真的需要关系数据库吗?等
-
很明显,您想要一些类似于固定大小的循环缓冲区的东西。一旦数据库文件达到您的大小限制 (3GB),您为什么不简单地开始用新数据条目覆盖最旧的条目。如果您提供正在使用的数据库框架的更多详细信息,有人将能够建议正确的实现。
-
数据(300Kb)是否需要在数据库中? - 如果数据可以单独存储(例如 3Gb 循环文件),那么数据库可能会表现得很好
标签: database embedded-linux diskspace shrink vacuum