我有一个场景,其中有大量与项目有关的状态数据。项目的状态每分钟更新一次,并且在不久的将来将有约50,000个项目。因此,在一个月内,将有大约2,232,000,000行数据。在存档旧数据之前,必须在主表中至少保存3个月的数据。
我必须计划实现基于特定项目(其ID)和数据范围(通常为一个月范围)的快速查询-例如,从Table中选择A、B、C,其中ItemID = 3000并且日期介于'2010-10-01'和'2010-10-31 23:59:59.999'之间。
那么我的问题是如何设计分区结构以实现这一点?
目前,我是基于“项目的唯一标识符”(int)mod“分区数”进行分区,以便所有分区均等分配。但这样做的缺点是需要在表上保留一个额外的列作为分区列传递给分区函数,从而将行映射到其分区。所有这些都增加了一些额外的存储开销。此外,每个分区都映射到不同的文件组。
我必须计划实现基于特定项目(其ID)和数据范围(通常为一个月范围)的快速查询-例如,从Table中选择A、B、C,其中ItemID = 3000并且日期介于'2010-10-01'和'2010-10-31 23:59:59.999'之间。
那么我的问题是如何设计分区结构以实现这一点?
目前,我是基于“项目的唯一标识符”(int)mod“分区数”进行分区,以便所有分区均等分配。但这样做的缺点是需要在表上保留一个额外的列作为分区列传递给分区函数,从而将行映射到其分区。所有这些都增加了一些额外的存储开销。此外,每个分区都映射到不同的文件组。