【发布时间】:2011-05-14 00:58:00
【问题描述】:
我有一个场景,其中有大量关于某个项目的状态数据。 项目状态每分钟更新一次,近期大概有50,000个项目。因此,在一个月内,将有大约 2,232,000,000 行数据。在归档旧数据之前,我必须在主表中至少保留 3 个月。
我必须计划基于特定项目(其 ID)和数据范围(通常最多一个月)来实现快速查询 - 例如从表中选择 A、B、C,其中 ItemID = 3000 和日期在 '2010-10-01' 和 '2010-10-31 23:59:59.999' 之间
所以我的问题是如何设计一个分区结构来实现这一点?
目前,我正在根据“项目的唯一标识符”(int)mod“分区数”进行分区,以便所有分区均等分布。但它的缺点是在表上保留一个额外的列作为分区函数的分区列,因此,将行映射到其分区。所有这些都增加了一点额外的存储空间。此外,每个分区都映射到不同的文件组。
【问题讨论】:
-
这有点负担。阅读here 关于大量写入的信息(您有 50k 行每秒传入)。我很想知道你将如何解决这个问题:我根本没有这种数量/增长率的经验
-
你是想为写查询效率设计还是读查询效率?你有什么样的读取负载?
-
您能否向我们提供更多关于表格中的列以及您在查询中返回的列大小(宽度)的信息?
标签: sql-server