有一个 SQLite 数据库用于以循环方式存储静态大小的数据。
例如,存储 100 天的数据。在第 101 天,删除第 1 天,然后插入第 101 天。
不同天的行数相同。行中的各个字段都是整数(32 位或更少)和时间戳。
数据库存储在 I/O 速度较差的 SD 卡上,读取速度为 30 MB/s。
VACUUM 是不允许的,因为它可以引入几秒钟的等待,并且不允许该数据库的写入者等待写入访问。
所以问题是碎片化,因为我在没有 VACUUMing 的情况下不断地插入和删除记录。但是由于我每天都在删除/插入同一组行,数据会变得支离破碎吗? SQLite 是否在第 1 天的释放页面中拟合第 101 天的数据?
尽管行集是相同的,但整数可能是 1 字节天,然后是 4 字节。该数据库还有几个索引,我不确定它们存储在哪里,以及它们是否会干扰释放页面然后重新使用它们的完美模式。
(SQLite是唯一可以使用的技术。不能切换到TSDB/RRDtool等)