优化模式(OPTIMIZER_MODE)
📄字数 931
👁️阅读量 加载中...
引入版本
v11.0.0
功能描述
OPTIMIZER_MODE
用于指定会话连接上的优化器的优化模式。
参数属性
属性 | 属性值 |
---|---|
参数类型 | VARCHAR |
默认值 | ALL_ROWS |
取值范围 | {ALL_ROWS,FIRST_ROWS(N)} |
影响范围 | 会话级 |
修改方式 | 在线修改,立即生效 |
使用场景说明
- OPTIMIZER_MODE 的作用及影响。
OPTIMIZER_MODE值 | def_optimize_mode值 | 功能 |
---|---|---|
ALL_ROWS | 0 | ALL_ROWS优化模式 |
FIRST_ROWS(N) | n | FIRST_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。
提示
- 查询中涉及多表连接,无聚合函数,无排序,无并行时,支持FIRST_ROWS(N)优化模式。
- 该参数在驱动程序缺省未指定的情况下,由系统全局参数 def_optimize_mode 决定,其默认值为 0;
示例
查看优化模式
sqlSQL> 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)