2

我需要支持收缩数据输入率为每秒 1 个条目(约 300KB)的数据库。数据库文件可以达到3GB。当前数据库没有自动清理功能。数据库文件空间超过一定限制(比如 3GB)是最坏的情况。

我目前的策略是删除最旧的数据(通过集群主键),然后到 CHECKPOINT DEFRAG。这似乎不可靠,VACUUM 或 DEFRAG 可能需要很长时间。我不想命名数据库名称,但我愿意接受建议。

我想知道还有哪些其他策略可以可靠地(几乎没有停机时间,O(1) 操作速度)保留磁盘空间。

编辑:需要关系数据库作为报告和 SQL 数据提取是必要的。

固定大小的循环缓冲区——确切地说——我需要在关系世界中复制它,使用占用空间小的数据库和快速的“循环”行为(即快速插入)

4

1 回答 1

1

1)根据您的要求确定可以存储多少行数据。

2) 使用与#1 相关的整数主键。

3)创建一种跟踪主键使用情况的方法,例如,将主键和使用时间戳存储在单独的表中。

4)插入时总是抓取最旧的主键,并用新数据更新该行。

如果实施得当,这会将行数限制为您在 #1 中指定的行数。

于 2015-09-03T14:12:00.980 回答