4.查询所需的数据中,不同部分的碎片不同,所需的I/O也不同。I/O数量
直接影响运
行速度和资源开销,甚至影响执行计划的生成,从而也导致了查询过程
中不同线
程部分的运行速度出现差异。
CXPACKET建议
如果并行操作失去了“平衡”,会使得CPU压力增大。在出现类似问题
时,可以尝试
以下方法。
1.如果是碎片问题,则减少碎片。
2.从物理文件的存放上要避免出现同一查询的不同部分因为I/O性能差异
而出现差
异。简单来说,就是保证数据文件所在的盘性能相等。
3.尽可能保持统计信息的实时性。
4.过多的线程会导致上下文切换开销,也容易引起CXPACKET等待,所以
在改动这
方面配置时,需要进行严谨的测试和监控。
5.绝大部分性能问题的终极方案----优化,从数据库设计、查询编码、索
引设计上进
行优化。
6.最常见的问题是由于查询性能过低,导致SQLServer选择了并行操作,
而并行操
作又存在一些问题,从而出现了这种等待。
扩展前面这个要点:在保持统计信息实时性和存在适当索引的前提下,
可以设置
查询中的MAXDOP,这个值可以设置为NUMA的物理CPU核数。对于
实例级别的
MAXDOP,应该考虑负载类型,比如是纯OLAP/OLTP还是混合类型。
7.把costthresholdforparallelism的值调高。
评论