查询内并行度导致服务器命令(进程 ID 93!)死锁。请重新运行该查询,并在查询中
用查询暗示选项 (maxdop 1) 去掉查询内并行度。-------------------------------------------------------
并行度
Microsoft® SQL Server™ 2000 通过考虑下列因素,自动检测出每个并行查询执行实例的最佳并行度: SQL Server 是否运行在拥有多个微处理器或 CPU 的计算机上,如对称多处理计算机 (SMP)? 
只有具有多个 CPU 的计算机才能使用并行查询。此刻 SQL Server 安装上的活动并发用户数是多少? 
SQL Server 监视 CPU 的使用情况,并在查询开始时调整并行度。如果 CPU 的使用量高,则选择较低的并行度。是否有足够的内存用于并行查询执行? 
执行每个查询都需要一定的内存量。执行并行查询比执行非并行查询需要更多内存。执行并行查询所需的内存量随并行度的增加而增加。如果用于特定并行度的并行计划的内存要求得不到满足,SQL Server 将自动降低并行度,或在特定的工作负荷环境下完全放弃并行计划而执行串行计划。所执行的查询是什么类型? 
大量消耗 CPU 循环的查询最适合使用并行查询。例如,大型表的联接、庞大的聚合和大型结果集的排序都十分适合使用并行查询。在进行简单查询(在事务处理应用程序中经常碰到)时,并行执行查询所需的额外协调工作,比潜在的性能提升要多。为区别从并行中受益的查询和不能从并行中受益的查询,SQL Server 将执行查询的估计成本与 cost threadshold for parallelism 的值进行比较。虽然不推荐,但用户可以使用 sp_configure 更改默认值 5。特定的流中有足够的行被处理吗? 
如果查询优化器确定流中的行数太少,则不引入交换运算符分发流。结果,此流中的运算符被串行执行。以串行计划执行运算符可避免出现这样的情况:启动、分发和协调成本超过并行运算符执行所获得的收益。-----------------------------------------
cost threshod for parallelism 选项
使用 cost threshold for parallelism 选项指定 Microsoft® SQL Server™ 创建和执行并行计划时的阈值。仅当为同一查询执行串行计划的估计成本比在 cost threshold for parallelism 选项中设定的值大时,SQL Server 才为该查询创建并执行一个并行计划。此处成本指的是在特定硬件配置中执行串行计划估计需要花费的时间(以秒为单位)。cost threshold for parallelism 只能在对称多处理器 (SMP) 系统中设置。并行计划对需时较长的查询通常更有用;因其性能优势可以抵消并行计划初始化、同步和结束所需要的额外时间开销。cost threshold for parallelism 选项通常在短时间和长时间查询混合执行的情况下才会被积极地使用,短查询执行串行计划,而长查询执行并行计划。cost threshold for parallelism 的值确定了哪些查询是短查询,并且只执行串行计划。在某些情况下,即使查询的成本计划小于当前 cost threshold for parallelism 的设置值,也有可能选择并行计划。这是因为,就 cost threshold for parallelism 而言,使用并行还是串行计划的决定是在全部优化完成前,根据所提供的估计成本做出的。cost threshold for parallelism 选项可设置为 0 到 32767 之间的任何值。默认值为 5。如果计算机只有一个处理器,或者由于 affinity mask 配置值的原因仅有一个处理器对SQL Server 可用,或者 max degree of parallelism 选项设为 1,则 SQL Server 将忽略 cost threshold for parallelism 选项。cost threshold for parallelism 是一个高级选项。如果使用 sp_configure 系统存储过程更改该设置,则仅当 show advanced options 设为 1 时才可更改 cost threshold for parallelism。更改后该设置立即生效(无需服务器停止并重新启动)。

解决方案 »

  1.   

    sp_lock看看锁信息
    试试这个
    服务器属性->处理器->为允许查询并行执行须满足的最小查询计划阙值(成本估计)
    默认值为5,现在改为25
      

  2.   

    sp_lock看看锁信息
    试试这个
    服务器属性->处理器->为允许查询并行执行须满足的最小查询计划阙值(成本估计)
    默认值为5,现在改为25
      

  3.   

    deadlock
    你的机器出现死锁,这种情况数据库应该回报1205号错误!
      

  4.   

    To happydreamer(小黑) :
      请问可以多讲讲查询计划阙值(成本估计)吗?  我的这个sql为什么会并行处理?是因为成本估计的值大于5了?To CrazyFor(蚂蚁) :
      我不想禁止CPU的并行处理才到这儿问的这些我都看过。谢谢了。To  microlong(微龙):
      因并行处理有时会产生检测不到的lock.
      

  5.   

    this is MS SQL SERVER bug and MS has fixed this bug in SP3!