所以让我先说我不能完全控制我的数据库设计,所以当前系统的很多方面都不能为了这个场景的目的而改变。
关于我们应该如何重新思考设计方面的评论可能是正确的,但无济于事:)
我有一个非常大的表,大约 150 个字段宽,大约 600m 行,它驱动大量进程。这是在数据仓库情况下,因此我们在计划加载过程之外没有任何更新/插入,因此它被大量索引。
已决定尝试对该表进行分区,我对索引分区表有一些担忧。我没有任何分区经验,因此感谢任何输入或链接。我无法在 BOL 或 msdn 上具体找到我所追求的内容。
目前,我们聚集在一个我们称之为IncidentKey
avarchar(50)
而非唯一的字段上——我们可以有 1-100 条相同的记录IK
(请不要发表评论)。我们确实经常在旧IncidentKey
记录上获取新数据,因此它也不是连续的。
我知道我需要IncidentDate
在我的聚集索引键中包含我的分区字段 ,才能使分区正常工作。我想它会是IncidentKey, IncidentDate
。
问题是,如果“新”分区中的记录应该在聚集索引中“旧”分区中的记录之前,聚集索引的机制将如何在分区表中的 2 部分键上工作?
例如,我有 5 条记录:
IncidentKey Date
ABC123 1/1/2010
ABC123 7/1/2010
ABC123 1/1/2011
XYZ999 1/1/2010
XYZ999 7/1/2010
Run Code Online (Sandbox Code Playgroud)
如果我得到一个新记录,ABC123, 2/1/2011
它将需要在聚集索引BEFORE 中 XYZ999, 1/1/2010
。这是如何运作的?
我假设有碎片和指针,但我找不到关于具有双部分键的分区表上非分区聚集索引的物理存储和配置的任何信息。