Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询优化与执行 » 查询执行算法 » 查询执行期间的并行

 

查询中的并行机制

如果一个查询处理的行数比其返回的行数多很多,则该查询更有可能使用并行机制。在这种情况下,所处理的行数包括所有扫描的行的大小加上所有中间结果的大小。因为将使用索引跳过表的大部分,所以不包括不会被扫描的行。理想的情况是对大型表使用单行 GROUP BY,它将扫描很多行但只返回一行。如果组的规模很大,多组查询也可以作为备选方案。删除许多行的任何谓语或连接条件,也是并行处理的很好选择。

下表列出了无论在优化还是在执行时间上,查询都无法使用并行机制的情况:

  • 服务器计算机没有多处理器

  • 服务器计算机未授权使用多处理器。可查看服务器属性 NumLogicalProcessorsUsed 检查此项。但是,请注意,超线程处理器不能计入查询内并行机制,因此,如果计算机是超线程的,必须将 NumLogicalProcessorsUsed 的值除以二。

  • max_query_tasks 选项设置为 1

  • 优先级选项设置为后台

  • 包含查询的语句不是 SELECT 语句

  • 最近一段时间以来,ActiveReq 的值一直大于或等于 NumLogicalProcessorsUsed 的值(如果计算机是超线程的,请将处理器数除以二)

  • 没有足够的任务可用。

 另请参见