我正在 QuestDB 中设计一个指标表。每天将有几百万行,它们在当天均匀分布。这些行大约有 200 个字节,全部是数字和时间戳。数据读取通常会持续几天,在边缘情况下可达一年。
我无法决定应该按天或月(甚至是年)对其进行分区。我知道我必须提前做出这个决定,因为无法从一种方式切换到另一种方式。
写入受益于较小的分区,读取受益于较大的分区。
小和大是相对于机器的RAM而言的。您希望分区能够完全容纳 RAM,因此根据经验,分区最大容量应达到 10Gb,以实现有效写入。
如果您的记录为 200 字节,那么每天将有多达 400Mb 的数据 200 万行。这使您可以自由地使用每月分区,如果您可以为 QuestDB 分配 32-64 Gb 的 RAM,每月大约需要 12 Gb。
每月分区对于长时间的多天扫描查询(例如每月或每年跨度)非常有效。每日分区将看到与“冷”运行时打开的多个文件相关的延迟。