sql2000因服务器的cpu内核数过多导致的性能变慢

xeon Post in Computer Technical
0

前几天遇到一个case,同样的应用在低端服务器上运行正常,一旦上到双socket的服务器上性能反而变慢。那天灵感闪过脑际,google了一下。

由于sql2000开发过早,对服务器多核支持有限,可以采取以下方法解决。

方法一:

运行以下语句:

sp_configure ‘show advanced options’, 1

go

reconfigure with override

go

sp_configure ‘max degree of parallelism’, 4

go

reconfigure with override

go

sql语句作用修改了在SQL Server中一个语句所使用的最多的CPU数(直接翻译就是最大并行度)。默认值是0,就是有几个空闲的CPU用几个CPU。设为4后,一个语句最多使用4个CPU。这样线程间通信的损耗就降下来了。降低最大并行度后,问题解决。

图形界面为:

  1. 停掉SQL所有服务
  2. 启动SQL Enterprise Manager
  3. 右键单击并选择”属性”在 <SQLSERVERNAME>
  4. 按一下”处理器”选项卡
  5. 找到部分”Parallelism”
  6. 部分下的”指定要使用的处理器数目的查询的并行执行”更改从缺省(“使用所有可用的处理器)来使用”
  7. 更改当前编号(例如, “8”)的处理器 2 (两个)
  8. 单击确定。
  9. 重新启动SQL Server
  10. 测试

方法二:

关掉CPU超线程,以降低CPU内核数。

 

建议使用方法一,毕竟不会影响其他应用和服务器的整个性能。举一反三,遇到老旧程序在新平台下运行缓慢都可采取这种方法来解决。

 

参考文献:

http://www.cnblogs.com/caiyuanzi/articles/1748400.html

http://www-01.ibm.com/support/docview.wss?uid=swg21371449

 

« Prev: :Next »

Leave a Reply