如果一个查询处理的行数比其返回的行数多很多,则该查询更有可能使用并行机制。在这种情况下,所处理的行数包括所有扫描的行的大小加上所有中间结果的大小。因为将使用索引跳过表的大部分,所以不包括不会被扫描的行。理想的情况是对大型表使用单行 GROUP BY,它将扫描很多行但只返回一行。如果组的规模很大,多组查询也可以作为备选方案。删除许多行的任何谓语或连接条件,也是并行处理的很好选择。
下表列出了无论在优化还是在执行时间上,查询都无法使用并行机制的情况:
服务器计算机没有多处理器
服务器计算机未授权使用多处理器。可查看服务器属性 NumLogicalProcessorsUsed 检查此项。但是,请注意,超线程处理器不能计入查询内并行机制,因此,如果计算机是超线程的,必须将 NumLogicalProcessorsUsed 的值除以二。
max_query_tasks 选项设置为 1
优先级选项设置为后台
包含查询的语句不是 SELECT 语句
最近一段时间以来,ActiveReq 的值一直大于或等于 NumLogicalProcessorsUsed 的值(如果计算机是超线程的,请将处理器数除以二)
没有足够的任务可用。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |