SQL SERVER 分区表的总结--一些疑问的总结

在使用的分区表中,遇到一些问题,也想到一些问题。就一起总结起来。

1. 像主表--从表,这种结构才应用同样的分区架构和分区函数,如订单主表--订单详细表。

    这样可以存储对齐,于IO和联接查询性能都有提升。

    但是如果两张不相关的表,最好不要用同样分区架构和分区函数。因为在对其中一张表做分区结构调整时,会同样作用到另一张表。

2. 每个分区对应一个不同的文件组,并置于不同的物理磁盘。这是官方的最佳实践。

    但是,我在实践中发现这样管理起来很不方便。比如,订单表,保留最近12个月的数据,分成12分区。订单存档表,因为量太大,可能会按三年前一个分区,

    最近三年每年一个分区,共四个分区。这样当把订单表的“过时”分区切到订单存档表时,由于不在同一个文件组,就需要一个零时中间表,最后也是做跨文件组传输数据,

    用不上Partition Switch的快速切换。要是数据量大的话,也会慢,或借助其它办法。

    个人认为,对于这两个大表,何不如划一个专用文件组,多建几个数据文件并置于不同的物理磁盘上。因为文件组中的数据文件是按比率填充的,这样也能实现IO均衡。

     查询时,更能受益于磁盘并行操作。而且同一个文件组中的做分区切换时,就能应用上Partition Switch的快速切换。

3. 对于分区表的查询,应该使用分区列做为主要检索条件。单表查询时,就能定位到特定分区。联接查询时,关联列也要是分区列,如果是存储对齐就能应用分区消除来进一步提升性能。

4. 还有一些大表,是用自增ID做主键索引的。如产品表。对于这种表,与其它表关联最多就是ID。如果一定对它分区,我个人认为分区列是选ID列。

    可是选了ID列分区,与其它表关联时,只是实现在查询时快速定位到产品表的某个分区,减少了扫描的量,提升了IO.

 

posted @ 2011-12-02 21:50  Joe.TJ  阅读(2448)  评论(3编辑  收藏  举报