sql-server-2008 – 为什么在我们的8-cpu SQL Server盒子上CPU使用如此不对称?

前端之家收集整理的这篇文章主要介绍了sql-server-2008 – 为什么在我们的8-cpu SQL Server盒子上CPU使用如此不对称?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我注意到运行sql Server 2008的8-cpu数据库服务器上的cpu使用率根本没有平衡.

以下是一段时间内随机日的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.

猜你在找的MsSQL相关文章