Jef*_*sen 3 sql-server partitioning
我正在使用的数据库目前超过100 GiB,并承诺在未来一年左右增长更多.我正在尝试设计一个可以与我的数据集一起使用的分区方案,但到目前为止已经失败了.我的问题是针对此数据库的查询通常会测试这一个大表中多列的值,最终会以不可预测的方式重叠结果集.
每个人(我正在与之合作的DBA)都警告不要有超过一定大小的表格,我已经研究和评估了我遇到的解决方案,但他们似乎都依赖于允许逻辑表分区的数据特性.不幸的是,鉴于我的表结构,我没有看到实现这一点的方法.
这是我们两个主要表格的结构,以便对此进行透视.
Table: Case
Columns:
Year
Type
Status
UniqueIdentifier
PrimaryKey
etc.
Table: Case_Participant
Columns:
Case.PrimaryKey
LastName
FirstName
SSN
DLN
OtherUniqueIdentifiers
Run Code Online (Sandbox Code Playgroud)
请注意,上面的任何列都可以用作查询参数.
而不是猜测,衡量.收集使用情况统计信息(运行查询),查看引擎自己的统计信息sys.dm_db_index_usage_stats
,然后做出明智的决定:最有效的分区平衡数据大小并为最常运行的查询提供最佳关联,这将是一个很好的选择.当然,你必须妥协.
另外,不要忘记分区是每个索引(其中'table'=其中一个索引),而不是每个表,因此问题不在于分区,而是分区或不分区的索引以及要使用的分区函数.这两个表上的聚簇索引显然是最可能的候选对象(仅对非聚集索引进行分区并且不对聚簇索引进行分区没有多大意义)因此,除非您正在考虑重新设计聚簇密钥,否则问题实际上是为您的聚簇索引选择的分区函数.
如果我冒昧猜测,我会说任何随时间累积的数据(比如'带有'年'的'案例'),最自然的分区就是滑动窗口.
归档时间: |
|
查看次数: |
1535 次 |
最近记录: |