
# 语句行为
介绍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/devg-fabric/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
#### xmlbinary
**参数说明：**设置二进制值是如何在XML中进行编码的。
**取值范围：**枚举型
- base64
- hex
**默认值：**base64
#### xmloption
**参数说明：**当XML和字符串值之间进行转换时，设置document或content是否是隐含的。
**取值范围：**枚举型
- document：表示HTML格式的文档。
- content：普通的字符串。
**默认值：**content
#### 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生效场景具有过滤效果。
**默认值：**none
 #### 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/devg-fabric/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被驱逐的问题。
 
#### 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信息。
**默认值**：perf
#### filter_options
**参数说明：**标识使用的查询过滤增强选项。
**取值范围：**字符串，可以同时设置多个。
- parquet_pushdown：支持parquet表的or条件下推到存储层进行过滤。
- iceberg_pushdown：支持iceberg表的or条件下推到存储层进行过滤。
- dictionary：支持parquet表根据字典信息过滤rowgroup。
- partition_dynamic_pruning：支持动态分区剪枝。
**默认值：空**
#### 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
#### scan_max_batch_rows
**参数说明**：控制从数据表扫描时单个batch的最大行数。该参数当前只支持iceberg表、parquet表和orc表。
**参数类型**：USERSET
**取值范围**：int，取值范围为1\~1000。
**默认值**：1000
