
# 语句行为
介绍SQL语句执行过程的相关默认参数。
#### search_path
**参数说明：**当一个被引用对象没有指定模式时，此参数设置模式搜索顺序。它的值由一个或多个模式名构成，不同的模式名用逗号隔开。
- 当前会话存放临时表的模式时，可以使用别名pg_temp将它列在搜索路径中，如pg_temp，public。 存放临时表的模式始终会作为第一个被搜索的对象，排在pg_catalog和search_path中所有模式的前面，即具有第一搜索优先级。建议用户不要在search_path中显式设置pg_temp。如果在search_path中指定了pg_temp，但不是在最前面，系统会提示设置无效，pg_temp仍被优先搜索。通过使用别名pg_temp，系统只会在存放临时表的模式中搜索表、视图和数据类型这样的数据库对象，不会在里面搜索函数或运算符这样的数据库对象。
- 系统表所在的模式pg_catalog，总是排在search_path中指定的所有模式前面被搜索，即具有第二搜索优先级（pg_temp具有第一搜索优先级）。建议用户不要在search_path中显式设置pg_catalog。如果在search_path中指定了pg_catalog，但不是在最前面，系统会提示设置无效，pg_catalog仍被第二优先搜索。
- 当没有指定一个特定模式而创建一个对象时，它们被放置到以search_path为命名的第一个模式中。当搜索路径为空时，会报错误。
- 通过SQL函数current_schema可以检测当前搜索路径的有效值。这和检测search_path的值不尽相同，因为current_schema显示search_path中首位有效的模式名称。
**取值范围：**字符串
![](https://support.huaweicloud.com/sqlref-aura-aidatalake/public_sys-resources/note_3.0-zh-cn.png)
- 设置为空串（''）的时候，系统会自动转换成一对双引号。
- 设置的内容中包含双引号，系统会认为是不安全字符，会将每个双引号转换成一对双引号。
 
#### current_schema
**参数说明：**设置当前的模式。
**取值范围：**字符串
**默认值：**default_db
#### statement_timeout
**参数说明：**当语句执行时间超过该参数设置的时间（从服务器收到命令时开始计时）时，该语句将会报错并退出执行。
**取值范围：**整型，0～2147483647，单位为毫秒（ms）。
**默认值：**0
#### bytea_output
**参数说明：**设置bytea类型值的输出格式。
**取值范围：**枚举型
- hex：将二进制数据编码为每字节2位十六进制数字。
- escape：传统化的PostgreSQL格式。采用以ASCII字符序列表示二进制串的方法，同时将那些无法表示成ASCII字符的二进制串转换成特殊的转义序列。
**默认值：**hex
#### enable_disk_cache
**参数说明：**设置是否打开磁盘缓存和数据预读，当前数据预取仅对PARQUET/ORC格式文件有效，磁盘缓存对所有格式文件均有效。
**取值范围：**布尔型
- on：打开磁盘缓存和数据预取。
- off：关闭磁盘缓存和数据预取。
**默认值：**on
#### disk_cache_max_size
**参数说明**：用于设置磁盘缓存的总大小。
**取值范围**：整型，512MB\~1PB
**默认值**：5GB
#### enable_aio_scheduler
**参数说明：**控制是否开启异步IO调度，该IO调度是异步读写的基础。
**取值范围：**布尔型
- on/true表示开启此IO调度开关。
- off/false表示关闭此IO调度开关。
**默认值：**on
#### runtime_filter_type
**参数说明：**标识使用的runtime filter类型。
**取值范围：**字符串
- all，表示应用所有的runtime filter。
- min_max，表示仅应用join场景下的runtime filter，且join场景仅会生成min_max过滤器。
- bloom_filter，表示仅应用join场景下的runtime filter，且满足条件后join会生成bloom filter进行过滤。
- global_filter：表示应用join场景下，跨dn节点的runtime filter，开启后支持runtime filter对不同dn上的数据生成min_max/bloom_filter过滤器。
- none，表示不使用runtime filter，此时仅对原版bloom filter生效场景具有过滤效果。
**默认值：**min_max, bloom_filter, global_filter
#### enable_meta_scan
**参数说明：**Iceberg查询时是否打开metaScan。
**取值范围：**bool
- on/true，打开metaScan，即在查询时由dn分布式获取待扫描文件列表。
- off/false，关闭metaScan，即在查询时在cn获取待扫描文件列表。
**默认值：**true
#### enable_spill_to_remote_storage
**参数说明**：控制是否打开spill-to-obs特性开关，为true时表示开启特性，下盘数据会被disk cache管控，并在空间不足时使用OBS作为逃生通道；为false时表示使用旧的下盘方式，直接写到本地EVS中。该参数存在参数依赖，当打开spill-to-obs特性开关enable_spill_to_remote_storage时，use_yr_as_block_cache_backend开关必须为false。
**取值范围**： bool
- on/true表示开启。
- off/false表示关闭。
**默认值**：true
![](https://support.huaweicloud.com/sqlref-aura-aidatalake/public_sys-resources/caution_3.0-zh-cn.png)
- 由于spill-to-obs特性依赖的元戎相关能力（如append buf）在25.3.0版本暂时无法提供，当前存在特性使用限制，当打开enable_spill_to_remote_storage时，diskcache的存储后端当前无法使用元戎数据系统，请设置use_yr_as_block_cache_backend开关为false后再启用spill-to-obs特性。
- use_yr_as_block_cache_backend为false时，意味着近计算缓存会直接使用DN实例下的目录来缓存数据，此时注意系统盘的空间问题， 此时建议将function-agent中存放DN实例的路径映射在大容量的物理EVS盘中，避免系统盘空间不足导致的pod被驱逐的问题。
 
#### enable_remote_cache
**参数说明**：控制SQL是否使用Cache服务作为跨语句的缓存，为true时表示使用Cache服务；为false时表示不使用跨语句的缓存。
**参数类型**：POSTMASTER
**取值范围**：bool
**默认值** ：false
![](https://support.huaweicloud.com/sqlref-aura-aidatalake/public_sys-resources/note_3.0-zh-cn.png)
- Cache服务支持跨语句的缓存，初次访问时，Cache服务会访问OBS服务，将远端数据缓存到Cache本地；后续对该数据的访问都会在Cache服务中命中，优化SQL语句IO请求的时间。

- 当GUC参数enable_remote_cache为true时，SQL会向Cache服务发起读请求和spill写请求；因此，需要保证产品部署或支持Cache服务，否则所有请求仍会发给OBS服务。
 
#### staging_folder_expire_time
**参数说明**：控制ORC、PARQUET表临时文件目录残留后的自动清理周期，默认七天后自动清理。
**取值范围**： int64，取值范围12h\~1year
**默认值**：604800
#### obs_result_format
**参数说明**：控制向OBS写入结果集文件时的格式，以及是否启动结果集文件压缩功能。
**参数类型**：USERSET
**取值范围**：int，取值范围0\~3。
- 0：结果集文件格式为JSON，并且不对结果集文件进行压缩。
- 1：结果集文件格式为JSON，并且使用zstd算法对结果集文件进行压缩。
- 2：结果集文件格式为ARROW，并且不对结果集文件进行压缩。
- 3：结果集文件格式为ARROW，并且使用zstd算法对结果集文件进行压缩。
**默认值**：0
#### resource_track_level
**参数说明**：控制SQL监控数据中query_plan字段上报的信息类型，当前只对select、insert、delete、update、create table as语句生效。
**参数类型**：USERSET
**取值范围**：枚举型
- query：SQL监控数据的query_plan字段上报explain信息。
- perf：SQL监控数据的query_plan字段上报explain performance信息。
- operator：在**perf**的基础上实时统计算子级监控信息并上报。
**默认值**：perf
#### external_partition_pruning_method
**参数说明**：控制ORC、PARQUET表分区读取方式。
**参数类型**：USERSET
**取值范围**：枚举型
- partition_list：从LakeFormation上获取分区列表，需确保LakeFormation上分区信息的正确性，可以通过show partitions table_name语法查看分区列表。
- partition_folder：从OBS上通过List文件目录的方式，获取分区列表。需要确保OBS上，数据目录组织形式满足key1=value1/key2=value2。
- url_filter：从LF上获取分区列表，并将查询条件尽可能下推给LakeFormation。
**默认值**：partition_list
#### reader_opt_options
**参数说明：**标识使用的查询过滤增强选项。
**取值范围：**字符串，可以同时设置多个。
- parquet_pushdown：支持parquet表的or条件下推到存储层进行过滤。
- iceberg_pushdown：支持iceberg表的or条件下推到存储层进行过滤。
- dictionary：支持parquet表根据字典信息过滤rowgroup。
- partition_dynamic_pruning：支持动态分区剪枝。
- remove_duplicate_filter：去除冗余的iceberg过滤条件执行。
- complex_type_pushdown：支持复杂类型的条件下推。
**默认值：**parquet_pushdown, iceberg_pushdown, partition_dynamic_pruning, dictionary, complex_type_pushdown, remove_duplicate_filter, page_index, parquet_native_decoder, dict_filter_row, balance_file_size
#### log_min_messages
**参数说明**：控制写到服务器日志文件中的消息级别。
**参数类型**：USERSET
**取值范围**：枚举型，有效值有debug5、debug4、debug3、debug2、debug1、info、notice、warning、error、log、fatal、panic。每个级别包含其后所有的级别，级别越靠后，发送到日志的消息越少。例如log在log_min_messages中的级别在error之后，log级别时只能打印log、fatal、panic三种日志到服务器日志文件中。
**默认值**：warning
#### enable_topsql_to_collector
**参数说明**：控制后台常驻的性能指标采集上报线程是否启动。
**参数类型**：bool
**取值范围**：布尔型
- on/true：表示开启。
- off/false：表示关闭。
**默认值**：false
