原数据库服务器是三个CPU,每个CPU八个核心,也就是24核
之前用的好好地,但是最近有一个视图查询出了问题,该视图关联了十张表,前面五张用inner join
后面的五张用left join,近期该视图频繁锁死(关闭所有其他连接的情况下,单开一个查询分许器),
查询如何优化都不行,后将核心数有24个修改成16个,该视图运行2秒就出结果了,请问这个是什么问题?
是否是SQLSERVER 2000对多核心的支持不够
注:数据库服务器操作系统为WINDOWS2003 ADVANCED SERVER
该视图的结果为4W+的记录数。
望各位牛人提点一下小弟,谢谢。

解决方案 »

  1.   

    检查SQL2000 SP4补丁安装了没?
      

  2.   

    首先,你允许并行查询,SQLSERVER会自动使用所有CPU,这个时候,如果CPU上有执行事务,你的查询就等待了。
      

  3.   

    在查询时,关了所有的外部链接,就开了一个查询分析器,照样锁住,最后暂时还是降低CPU核心数解决了,感觉还是2000对多CPU的支持不够。
      

  4.   

    前面没有说清楚,该视图频繁锁死并不是简单地查不出数据,而是sqlserver报了"事务(进程 ID  70)与另一个进程已被死锁在  lock 资源上,且该事务已被选作死锁牺牲品"这种错误,我想这种错误应该只发生在两个事物互相锁住的情况下,上面说了,在查询时,关了所有的外部链接,就开了一个查询分析器,最后连服务器都重启了,还是会报进程死锁。
      

  5.   

    SQLSERVER2000没用过,但是CPU多,不一定能全部利用,如果CPU的并行查询对系统造成影响,或者SQLSERVER版本不支持多CPU,那也于事无补。还有,关闭所有外部连接,查询都很慢,你有没有尝试监视数据库或服务器?
      

  6.   

    查看过服务器的CPU、内存和硬盘的利用率,都很低,服务器应该没问题,而且其他查询运行都正常,这个出问题的查询以前也是正常的,突然某一天发生了问题。
      

  7.   

    查看过服务器的CPU、内存和硬盘的利用率,都很低,服务器应该没问题,而且其他查询运行都正常,这个出问题的查询以前也是正常的,突然某一天发生了问题。
    应该是2000对于CPU核的支持不够。