以下是一段时间内随机日的1天平均值,这是典型且持续不对称的:
9,15,10,21,18,14,9
(此处只有缩略图,因为图片非常高,但点击查看完整尺寸的图片)
与我们的4-cpu网络服务器相比,这些服务器几乎完全平衡且完美平衡,令我感到奇怪.
现在,这是一个专用服务器,因此唯一运行的是sql Server 2008(以及我们大量使用的内置全文索引),所以我不确定为什么cpu使用会如此不对称.思考?
解决方法
我会剽窃myself:
还有一个关于IO的想法:我们小心地将我们最常用的表格设置在文件组中,其中包含多个文件.其中一个性能增强是sql会将请求连接到文件组中的每个文件 – 因此,如果BigOverUsedTable位于FileGroup1上,而FileGroup1中有四个文件而您的数据库有8个内核,那么它实际上将使用四个内核来执行“选择”从BigOverUsedTable大数字处理令人讨厌的查询“ – 否则,它只会使用一个cpu.我们从这篇MSDN文章中得到了这个想法:
http://msdn.microsoft.com/en-us/library/ms944351.aspx
来自TFA:
“文件组使用并行线程来改善数据访问.当按顺序访问表时,系统会为每个文件并行创建一个单独的线程.当系统对包含四个文件的文件组中的表执行表扫描时,它使用四个单独的文件并行读取数据的线程.通常,在不同的磁盘上使用多个文件可以提高性能.文件组中的文件太多会导致并行线程太多并造成瓶颈.“
由于这个建议,我们在8核机器上的文件组中有四个文件.它运作良好.
编辑:现在有另一个(可能)更好的答案.图表是按比例缩小的 – 如果你仔细观察,每个处理器实际上大约20%加载,因为uzbones指出.
编辑:我们实际上可以说使用多个文件文件组有帮助,因为我们没有将所有表放在包含四个文件的文件组中. “单个文件”文件组上的大查询仅使用一个cpu,但是对四个文件文件组中的表的查询命中4个cpu.