Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


优化模式(OPTIMIZER_MODE)

📄字数 931
👁️阅读量 加载中...

引入版本

v11.0.0

功能描述

OPTIMIZER_MODE 用于指定会话连接上的优化器的优化模式。

参数属性

属性属性值
参数类型VARCHAR
默认值ALL_ROWS
取值范围{ALL_ROWS,FIRST_ROWS(N)}
影响范围会话级
修改方式在线修改,立即生效

使用场景说明

  1. OPTIMIZER_MODE 的作用及影响。
OPTIMIZER_MODE值def_optimize_mode值功能
ALL_ROWS0ALL_ROWS优化模式
FIRST_ROWS(N)nFIRST_ROWS(N)优化模式,优化查询的响应时间,N取值范围为[1,2147483647]

ALL_ROWS

ALL_ROWS优化模式,是默认值,侧重点是最最佳吞吐量,返回全部结果的检索时间。

这对于需要从大量数据中检索的查询而言非常有用。

ALL_ROWS模式下,倾向使用HashJoin。

FIRST_ROWS(N)

FIRST_ROWS(N) 优化模式,侧重点是最佳响应速度,加快了前N条数据检索速度,追求最快返回第一批结果给应用程序。

该优化可以在服务端返回全部结果之前就开始返回第一批结果,从而减少用户等待时间。

这对于需要快速响应的在线事务处理系统或网站非常重要。

CBO在路径优化时,选择符合FIRST_ROWS(N)优化策略的最优路径,以最快响应速度返回前N条数据,根据N值决定是否使用索引扫描。

FIRST_ROWS模式下,倾向使用IndexJoin。

提示

  1. 查询中涉及多表连接,无聚合函数,无排序,无并行时,支持FIRST_ROWS(N)优化模式。
  2. 该参数在驱动程序缺省未指定的情况下,由系统全局参数 def_optimize_mode 决定,其默认值为 0;

示例

  • 查看优化模式

    sql
    SQL> SHOW OPTIMIZER_MODE;
    
    +----------------+
    | OPTIMIZER_MODE |
    +----------------+
    | ALL_ROWS       |
    +----------------+
  • 设置优化模式

    sql
    -- 设置优化首行
    SQL> SET OPTIMIZER_MODE TO 'FIRST_ROWS';
    
    Execute successful.
    -- 设置优化首行
    SQL> SET OPTIMIZER_MODE TO 'FIRST_ROWS(100)';
    
    Execute successful.
    
    SQL> show OPTIMIZER_MODE;
    
    +-----------------+
    | OPTIMIZER_MODE  |
    +-----------------+
    | FIRST_ROWS(100) |
    +-----------------+
    
    (1 row)