Sybase ASE使用保存在分区控制页上的统计数据,来评测基于分区的并行扫描方式,以挑选最优执行计划。如果表中数据在多个分区上是分布均衡的,表分区统计数据是精确的,那么扫描效率就比较高,并行处理就有很好的性能,所以表分区的维护对于并行查询处理十分重要。Sybase ASE的异常停止和某些情况下的事务回退都可能造成分区统计数据不精确,Sybase ASE提供了两个系统函数data_pgs和ptn_data_pgs,用它们可分别计算数据页面数量。如果两者不相同,说明分区统计不精确,需要维护,Sybase ASE 提供如下命令来更新分区和页面统计数据:
1.更新每个分区的页面统计数据:
update partition statistics
2.更新表上索引的分布页面,同时更新各个表分区的控制页面的统计数据:
update all statistics table_name
3.显示表分区的当前信息:
sp_helpartition
如果对分区的表进行了大量的插入、更新和删除后,数据有可能分布不均匀,使用BCP加载大量数据后,也可能会出现数据分布不均匀,此外一些其他原因也可能导致数据分布不均匀。平衡分区数据有两种方法:一是对有数据的表建聚簇索引,二是使用并行块拷贝,指定数据加载到某个分区的方法,Sybase ASE 新的BCP允许用户指定分区,把数据加载到指定的分区中。