本文详细列举了在 SQL HINT 中可以使用
set_var 进行指定的系统变量列表。Runtime Filter 相关
系统变量 | 含义 | 参数类型 | 默认值 | 取值范围 | 作用域 | 支持 SET_VAR Hint |
libra_enable_runtime_filter | 是否打开 Runtime Filter。 | BOOL | ON | ON:打开 Runtime Filter; OFF:关闭 Runtime Filter。 | Global & Session | 是 |
libra_runtime_filter_type | 设置可以分配的 Runtime Filter 类型。 | VARCHAR | MIN_MAX,BLOOM_FILTER,IN_FILTER,TOPN_FILTER | BLOOM_FILTER:构建 JOIN BUILD 端 JOIN KEY 的 Bloom Filter 来进行 Probe 端的数据过滤; MIN_MAX:构建 JOIN BUILD 端 JOIN KEY 的最大最小值来进行 Probe 端的数据过滤; IN_FILTER:构建 JOIN BUILD 端 JOIN KEY 的值列表来进行 Probe 端的数据过滤;TOPN_FILTER:基于 TopN 的 Runtime Filter;空字符串:表示关闭 Runtime Filter 功能。 | Global & Session | 是 |
libra_enable_cost_based_runtime_filter | 开启或关闭基于代价的 Runtime Filter。 | BOOL | ON | ON:开启基于代价的 Runtime Filter 分配; OFF:关闭基于代价的 Runtime Filter 分配。 | Global & Session | 是 |
libra_max_in_runtime_filter_ndv | 在基于代价的 Runtime Filter 中,生成 IN 类型的 Runtime Filter 时,BUILD 端最大的 NDV(Number of Distinct Values)值。 | INT | 1024 | [0, MaxInt64] | Global & Session | 是 |
runtime_filter_wait_time_ms | 在 RF USE 侧首次等待 RF Ready 的最大时间。 | INT | 100 | 任意整数 | Global & Session | 是 |
说明:
runtime_filter_wait_time_ms 取负值时表示无限等待,直到查询超时或被中断。Late Materialization 相关
系统变量 | 含义 | 参数类型 | 默认值 | 取值范围 | 作用域 | 支持 SET_VAR Hint |
libra_enable_late_materialization | 是否打开延时物化。 | BOOL | ON | ON:打开延时物化; OFF:关闭延时物化。 | Global & Session | 是 |
并行和并发相关
系统变量 | 含义 | 参数类型 | 默认值 | 取值范围 | 作用域 | 支持 SET_VAR Hint |
max_threads | 查询在执行时的并行度。 | INT | 0 | 0 - MaxInt64(建议不超过 CPU 核数的两倍) | Global & Session | 是 |
说明:
max_threads 取值为 0 时表示由系统根据节点的 CPU 核数自动决定并行度。执行引擎相关
系统变量 | 含义 | 参数类型 | 默认值 | 取值范围 | 作用域 | 支持 SET_VAR Hint |
max_bytes_before_external_agg_uniq_exact | count distinct 使用计算函数 uniqExact 时,HashSet 超过该限制值时开始切外存。默认值为0,不做外存计算。 | INT | 0 | [0, MaxInt64] | Global & Session | 是 |
agg_uniq_exact_set_one_bucket_max_temp_file_size | count distinct 使用计算函数 uniqExact 时,每个 bucket 落盘文件最大值,超过该值需要切换新的文件写入。 | INT | 68719476736 | [0, MaxInt64] | Global & Session | 是 |
count_distinct_implementation | count distinct 计算使用的函数名称。 | VARCHAR | uniqExact | uniqExact:纯内存的精准 CountDistinct 计算方法;uniqExactDisk:带落盘功能的精准 CountDistinct 计算方法;uniq:CountDistinct 近似计算方法 | Global & Session | 是 |
join_build_concurrency | 指定用于 Join Build 所使用的并行度。默认值为0,表示使用 Default 或者指定 MaxThreads。 | INT | 0 | [0, MaxInt64] | Global & Session | 是 |
enable_local_tunnel | 是否支持本机的 Sender 和 Receiver 的通信优化。 | BOOL | ON | ON:开启 Local Channel 本机通信优化;OFF:关闭 Local Channel 本机通信优化 | Global & Session | 是 |
mpp_max_packet_size | Sender 发送的数据包最大大小。 | INT | 0 | [0, MaxInt64],0代表未限制 | Global & Session | 是 |
tunnel_buffer_size | Sender 端缓冲发送队列 BUFFER 的数量。 | INT | 1 | [0, MaxInt64] | Global & Session | 是 |
pipeline_executor_use_thread_manager | Pipeline 模型是否使用动态线程池模型。 | BOOL | OFF | ON:开启 Pipeline 模型使用动态线程池;OFF:关闭 Pipeline 模型使用动态线程池 | Global & Session | 是 |
enable_order_by_push_down | 开启或关闭 order by 下推功能。 | BOOL | ON | ON:开启 order by 下推功能;OFF:关闭 order by 下推功能 | Global & Session | 是 |
max_block_size | 设置 Pipeline 执行引擎中所传递数据 Block 的行数。 | INT | 65409 | [1, MaxInt64] | Global & Session | 是 |
shuffle_after_join | 设置 Join 后是否将数据打散到多个 Pipeline。 | BOOL | OFF | ON:开启打散功能;OFF:关闭打散功能 | Global & Session | 是 |
使用示例
通过 SQL HINT 中的
SET_VAR 在单条查询中临时调整系统变量,示例如下:SELECT /*+ SET_VAR(libra_enable_runtime_filter = ON) SET_VAR(max_threads = 8) */a.id, b.nameFROM table_a a JOIN table_b b ON a.id = b.id;