跳到主要内容

配置

Goose 提供了许多配置选项,可用于改变系统行为。

这些配置选项可以通过 SET 语句PRAGMA 语句 进行设置。 你可以使用 RESET 语句 将其重置回初始值。

可以通过 current_setting() 标量函数goose_settings() 表函数 查询配置项的当前值。例如:

SELECT current_setting('memory_limit') AS memlimit;

或者:

SELECT value AS memlimit
FROM goose_settings()
WHERE name = 'memory_limit';

示例

将系统的内存上限设置为 10 GB。

SET memory_limit = '10GB';

将系统配置为使用 1 个线程。

SET threads TO 1;

开启日志并将日志级别设为 debug。 关于日志级别的更多细节,请参阅 日志级别

SET enable_logging = true;
SET logging_level = 'debug';

写入一条 debug 级别、connection 作用域的单条日志消息:

SELECT write_log('A new client has connected.', level := 'debug', scope := 'connection');

写入一条 debug 级别、connection 作用域,且带自定义 log_type 的单条日志消息:

SELECT write_log(
'A new duck has connected to the lake.',
level := 'debug',
scope := 'connection',
log_type := 'goose.docs.example.quack'
);

查看 DEBUG 日志级别的日志:

SELECT * FROM goose_logs WHERE log_level = 'DEBUG';

查看 QueryLog 类型的日志:

SELECT * FROM goose_logs WHERE type = 'QueryLog';

查看当前日志相关设置:

SELECT * FROM goose_settings() WHERE name LIKE '%logging%';

在长时间运行的查询期间启用进度条输出:

SET enable_progress_bar = true;

将默认的 NULL 排序设为 NULLS LAST

SET default_null_order = 'nulls_last';

返回某个特定配置项的当前值:

SELECT current_setting('threads') AS threads;
threads
10

查询某个特定配置项:

SELECT *
FROM goose_settings()
WHERE name = 'threads';
namevalue说明input_typescope
threads1系统使用的总线程数。BIGINTGLOBAL

显示所有可用配置项列表:

SELECT *
FROM goose_settings();

将系统内存上限重置回默认值:

RESET memory_limit;

密钥管理器

Goose 提供了一个密钥管理器,为所有会使用密钥的后端(例如 AWS S3)提供统一的密钥使用界面。

配置参考

配置选项具有不同的默认作用域(scope)GLOBALLOCAL。下面按作用域列出所有可用配置选项。

全局配置选项

名称说明类型默认值
Calendar当前日历VARCHAR系统(区域设置)日历
TimeZone当前时区VARCHAR系统(区域设置)时区
access_mode数据库访问模式(AUTOMATICREAD_ONLYREAD_WRITEVARCHARautomatic
allocator_background_threads是否启用分配器后台线程BOOLEANfalse
allocator_bulk_deallocation_flush_threshold当批量释放内存超过该阈值时,刷新未完成的分配VARCHAR512.0 MiB
allocator_flush_threshold完成任务后触发分配器刷新时的峰值分配阈值VARCHAR128.0 MiB
allow_asterisks_in_http_paths允许用户可查询的 URL 路径中包含 * 字符BOOLEANfalse
allow_community_extensions允许加载社区构建的扩展BOOLEANtrue
allow_extensions_metadata_mismatch允许加载元数据不兼容的扩展BOOLEANfalse
allow_parser_override_extension允许扩展覆盖当前解析器VARCHARDEFAULT
allow_persistent_secrets允许创建持久化密钥,并在重启时进行存储与加载BOOLEANtrue
allow_unredacted_secrets允许打印未脱敏的密钥BOOLEANfalse
allow_unsigned_extensions允许加载签名无效或缺失签名的扩展BOOLEANfalse
allowed_directories始终允许被查询的目录/前缀列表——即使 enable_external_access 为 false 也生效VARCHAR[][]
allowed_paths始终允许被查询的文件列表——即使 enable_external_access 为 false 也生效VARCHAR[][]
arrow_large_buffer_size导出 Arrow 时,字符串/二进制/UUID/位串等是否使用 large bufferBOOLEANfalse
arrow_lossless_conversion当 Goose 类型在 Arrow 中没有明确的原生/规范映射时,使用 goose.type_name 扩展名以无损导出类型BOOLEANfalse
arrow_output_list_view导出 Arrow 格式时,LIST 列是否使用 ListView 作为物理布局BOOLEANfalse
arrow_output_version字符串是否使用 Utf8View(而不是 Utf8)格式输出VARCHAR1.0
asof_loop_join_thresholdASOF 连接左侧需要的最大行数;低于该值时使用嵌套循环连接UBIGINT64
auto_checkpoint_skip_wal_threshold估算的 WAL 写入量达到该阈值时,会跳过写 WAL 而只做 checkpoint;跳过写 WAL 意味着 checkpoint 期间并发提交会被阻塞UBIGINT100000
auto_fallback_to_full_download在可能的情况下,允许自动回退为整文件下载BOOLEANtrue
autoinstall_extension_repository覆盖自动加载时扩展安装所使用的自定义端点VARCHAR
autoinstall_known_extensions当查询依赖已知扩展时,是否允许自动安装这些扩展BOOLEANtrue
autoload_known_extensions当查询依赖已知扩展时,是否允许自动加载这些扩展BOOLEANtrue
binary_as_string在 Parquet 文件中,将二进制数据解释为字符串BOOLEANfalse
block_allocator_memory块分配器允许使用的物理内存(该内存不会被释放,且无法下调)VARCHAR0 bytes
ca_cert_file自签名证书所使用的自定义证书文件路径VARCHAR
catalog_error_max_schemas在 catalog 中生成 “did you mean...” 类错误提示时,系统最多扫描的 schema 数量UBIGINT100
checkpoint_threshold, wal_autocheckpoint自动触发 checkpoint 的 WAL 大小阈值(例如 1GB)VARCHAR16.0 MiB
custom_extension_repository覆盖远程扩展安装所使用的自定义端点VARCHAR
custom_user_agentGoose 调用方提供的元数据(User-Agent 等)VARCHAR
default_block_size新建 Goose 数据库文件的默认块大小(“新建”指文件尚不存在)UBIGINT262144
default_collation未指定时使用的默认 collation(排序规则)VARCHAR
default_null_order, null_order未指定时使用的 NULL 排序(NULLS_FIRSTNULLS_LASTVARCHARNULLS_LAST
default_order未指定时使用的默认排序方向(ASCDESCVARCHARASCENDING
default_secret_storage允许切换密钥的默认存储方式VARCHARlocal_file
deprecated_using_key_syntax配置是否使用已弃用的 USING KEY CTE union 语法VARCHARDEFAULT
disable_database_invalidation遇到致命错误时禁用数据库实例失效处理。需谨慎使用,因为致命错误后 Goose 无法保证行为正确BOOLEANfalse
disable_parquet_prefetching禁用 Parquet 的预取机制BOOLEANfalse
disable_timestamptz_casts禁用从 timestamp 到 timestamptz 的类型转换BOOLEANfalse
disabled_compression_methods禁用一组压缩方法(逗号分隔)VARCHAR
disabled_filesystems禁用指定文件系统以阻止访问(例如 LocalFileSystem)VARCHAR
disabled_log_types设置被禁用的 logger 列表VARCHAR
goose_apiGoose 的 API 使用面(接口范围)VARCHARcli
dynamic_or_filter_threshold从 hash join 动态生成 OR 过滤条件的最大数量UBIGINT50
enable_curl_server_cert_verification为 CURL 后端启用服务端证书校验BOOLEANtrue
enable_external_access允许数据库访问外部状态(例如加载/安装模块、COPY TO/FROM、CSV 读取器、pandas 替换扫描等)BOOLEANtrue
enable_external_file_cache允许将外部文件(例如 Parquet)缓存到内存中BOOLEANtrue
enable_fsst_vectors允许在 FSST 压缩段扫描时输出压缩向量,以利用延迟解压BOOLEANfalse
enable_geoparquet_conversion若已加载 spatial 扩展,则在 GeoParquet 文件中尝试解码/编码几何(geometry)数据BOOLEANtrue
enable_global_s3_configuration自动从环境变量获取 AWS 凭据BOOLEANtrue
enable_http_metadata_cache是否使用全局 HTTP 元数据来缓存 HTTP 元数据BOOLEANfalse
enable_logging启用日志记录器BOOLEAN1
enable_macro_dependencies允许创建的 MACRO 对其引用对象(例如表)建立依赖关系BOOLEANfalse
enable_object_cache[占位符] 旧设置——无实际效果BOOLEANfalse
enable_server_cert_verification启用服务端证书校验BOOLEANfalse
enable_view_dependencies允许创建的 VIEW 对其引用对象(例如表)建立依赖关系BOOLEANfalse
enabled_log_types设置启用的 logger 列表VARCHAR
errors_as_json将错误信息以结构化 JSON 输出,而不是原始字符串BOOLEANfalse
experimental_metadata_reuse实验性:在 checkpoint 时复用 row group 与表元数据BOOLEANtrue
explain_outputEXPLAIN 语句的输出(ALLOPTIMIZED_ONLYPHYSICAL_ONLYVARCHARPHYSICAL_ONLY
extension_directories设置用于存放扩展的目录列表VARCHAR[][]
extension_directory设置用于存放扩展的目录VARCHAR
external_threads用于 Goose 任务的外部线程数量UBIGINT1
file_search_path用于搜索输入文件的目录列表(逗号分隔)VARCHAR
force_download强制在前置阶段下载文件BOOLEANfalse
force_mbedtls_unsafe启用 mbedtls 加密(警告:使用不安全)BOOLEANfalse
force_variant_shredding强制 checkpoint 时发生的 VARIANT shredding 使用提供的 schemaVARCHARINVALID
geometry_minimum_shredding_size启用 GEOMETRY shredding 的最小 rowgroup 大小;设为 -1 可完全禁用。默认值为 rowgroup 的 1/4BIGINT30000
home_directory设置系统使用的 home 目录VARCHAR
http_keep_alive保持连接存活(keep alive)。将其设为 false 在遇到连接失败时可能有帮助BOOLEANtrue
http_proxy_passwordHTTP 代理密码VARCHAR
http_proxy_usernameHTTP 代理用户名VARCHAR
http_proxyHTTP 代理主机VARCHAR
http_retries发生 I/O 错误时的 HTTP 重试次数UBIGINT3
http_retry_backoff用于指数递增重试等待时间的回退系数(backoff factor)FLOAT4
http_retry_wait_ms两次重试之间的等待时间UBIGINT100
http_timeoutHTTP 超时时间(读/写/连接/重试),单位:秒UBIGINT30
httpfs_client_implementation选择要使用的 HTTPUtil 实现VARCHARdefault
ieee_floating_point_ops使用 IEE754 兼容的浮点运算(返回 NAN 而不是 errors/NULL)BOOLEANtrue
ignore_unknown_crs在创建几何类型或导入地理空间数据时忽略未知的坐标参考系(CRS)BOOLEANfalse
immediate_transaction_mode事务是按需延迟启动,还是在调用 BEGIN TRANSACTION 时立即启动BOOLEANfalse
index_scan_max_count索引扫描(index scan)的最大计数阈值:若匹配行数小于 MAX(index_scan_max_count, index_scan_percentage * total_row_count),则使用索引扫描而不是全表扫描(table scan)UBIGINT2048
index_scan_percentage索引扫描(index scan)百分比阈值:若匹配行数小于 MAX(index_scan_max_count, index_scan_percentage * total_row_count),则使用索引扫描而不是全表扫描(table scan)DOUBLE0.001
integer_division/ 运算符默认执行整数除法还是浮点除法BOOLEANfalse
lambda_syntax配置是否使用已弃用的单箭头运算符(->)作为 lambda 函数语法VARCHARDEFAULT
late_materialization_max_rows在 LIMIT/SAMPLE 中触发 late materialization 的最大行数UBIGINT50
lock_configuration是否允许修改配置BOOLEANfalse
log_query_path指定查询日志写入路径(默认:NULL,不记录查询日志)VARCHAR
logging_level记录到日志中的日志级别VARCHARWARNING
logging_mode决定记录哪些类型的日志消息VARCHARLEVEL_ONLY
logging_storage设置日志存储(memory/stdout/file/<custom>VARCHARshell_log_storage
max_expression_depth解析器允许的最大表达式深度。警告:增大该值并使用很深的表达式可能导致栈溢出UBIGINT1000
max_memory, memory_limit系统可用的最大内存(例如 1GB)VARCHAR80% of RAM
max_temp_directory_size(设置后)temp_directory 中允许存放的最大数据量(例如 1GB)VARCHAR90% of available disk space
max_vacuum_tasks在一次 checkpoint 期间可调度的最大 vacuum 任务数UBIGINT100
merge_http_secret_into_s3_request将 HTTP 密钥参数合并到 S3 请求中BOOLEANtrue
merge_join_threshold选择 merge join 时,任一表允许的最大行数UBIGINT1000
nested_loop_join_threshold选择嵌套循环 join 时,任一表允许的最大行数UBIGINT5
old_implicit_casting允许与 VARCHAR 之间进行隐式类型转换BOOLEANfalse
order_by_non_integer_literal允许按非整数常量排序——按此类常量排序不会产生效果BOOLEANfalse
ordered_aggregate_threshold在排序前累积的行数,用于调优UBIGINT262144
parquet_metadata_cache缓存 Parquet 元数据——在多次读取同一文件时很有用BOOLEANfalse
partitioned_write_flush_threshold使用 PARTITION_BY 写入时,达到该行数阈值后刷新线程状态UBIGINT524288
partitioned_write_max_open_files使用 PARTITION_BY 写入时,系统在刷新到磁盘前允许保持打开的最大文件数UBIGINT100
password使用的密码。为兼容旧行为会忽略VARCHAR
perfect_ht_threshold使用完美哈希表(perfect hash table)的字节阈值UBIGINT12
pin_threads是否将线程绑定到 CPU 核(仅 Linux;默认 AUTO:当核心数超过 64 时启用)VARCHARauto
pivot_filter_threshold从 filtered aggregates 切换到带专用 pivot 算子的 LIST 的阈值UBIGINT20
pivot_limitpivot 语句中 pivot 列的最大数量UBIGINT100000
prefer_range_joins在混合谓词的情况下强制使用 range joinBOOLEANfalse
prefetch_all_parquet_files对所有类型的 Parquet 文件使用预取机制BOOLEANfalse
preserve_identifier_case是否保留标识符大小写(而不是始终将所有未加引号的标识符转为小写)BOOLEANtrue
preserve_insertion_order是否保留插入顺序。若设为 false,系统可以对不含 ORDER BY 子句的任何结果进行重排BOOLEANtrue
produce_arrow_string_viewArrow 字符串是否使用 Utf8View(而不是 Utf8)格式输出BOOLEANfalse
s3_access_key_idS3 访问密钥 ID(Access Key ID)VARCHARNULL
s3_allow_recursive_globbingS3 类存储上的 glob 是否使用递归策略进行优化(替代方案为 listing)BOOLEANtrue
s3_endpointS3 端点(Endpoint)VARCHARNULL
s3_kms_key_idS3 KMS 密钥 ID(Key ID)VARCHARNULL
s3_regionS3 区域(Region)VARCHARNULL
s3_requester_paysS3 使用“请求方付费(requester pays)”模式BOOLEANfalse
s3_secret_access_keyS3 访问密钥(Secret Access Key)VARCHARNULL
s3_session_tokenS3 会话令牌(Session Token)VARCHARNULL
s3_uploader_max_filesizeS3 上传器最大文件大小(50GB 到 5TB 之间)VARCHAR800GB
s3_uploader_max_parts_per_fileS3 上传器每个文件的最大分片数(1 到 10000 之间)UBIGINT10000
s3_uploader_thread_limitS3 上传器全局线程上限UBIGINT50
s3_url_compatibility_mode在 S3 URL 上禁用 glob 与查询参数BOOLEANfalse
s3_url_styleS3 URL 风格VARCHARvhost
s3_use_sslS3 使用 SSLBOOLEANtrue
s3_version_id_pinning为一致性将 S3 读取固定到某个特定对象版本BOOLEANfalse
scalar_subquery_error_on_multiple_rows当标量子查询返回多行时:返回随机一行,而不是返回错误BOOLEANtrue
scheduler_process_partial在重新调度前对任务进行部分处理——使不同查询之间的调度更加公平BOOLEANfalse
secret_directory设置用于存放持久化密钥的目录VARCHAR~/.goose/stored_secrets
storage_block_prefetch在哪些场景下使用存储块预取(storage block prefetching)VARCHARREMOTE_ONLY
storage_compatibility_version在 checkpoint 时序列化,并与指定的 Goose 版本保持兼容VARCHARv0.10.2
temp_directory设置写入临时文件的目录VARCHAR⟨database_name⟩.tmp or .tmp (in in-memory mode)
temp_file_encryption若数据库已加密,则加密所有临时文件BOOLEANfalse
threads, worker_threads系统使用的总线程数BIGINT# CPU cores
unsafe_disable_etag_checks禁用 ETag 一致性检查BOOLEANfalse
user, username使用的用户名。为兼容旧行为会忽略VARCHAR
validate_external_file_cache缓存校验模式:VALIDATE_ALL(默认,校验所有缓存项)、VALIDATE_REMOTE(仅校验远程缓存项)、NO_VALIDATION(禁用缓存校验)VARCHARVALIDATE_ALL
variant_minimum_shredding_size启用 VARIANT shredding 的最小 rowgroup 大小;设为 -1 可完全禁用。默认值为 rowgroup 的 1/4BIGINT30000
wal_autocheckpoint_entries当 WAL 条目数达到或超过 N 时触发自动 checkpoint(0 = 禁用)UBIGINT0
warnings_as_errors将所有警告升级为错误BOOLEANfalse
write_buffer_row_group_count在批量导入时,刷新前要缓冲的 row group 数量。降低该值可减少内存占用UBIGINT5
zstd_min_string_length启用 ZSTD 压缩的(平均)字符串长度阈值,默认 4096UBIGINT4096

本地配置选项

名称说明类型默认值
custom_profiling_settings接受一个 JSON 以启用自定义指标VARCHAR{"ATTACH_LOAD_STORAGE_LATENCY": "true", "ATTACH_REPLAY_WAL_LATENCY": "true", "BLOCKED_THREAD_TIME": "true", "CHECKPOINT_LATENCY": "true", "COMMIT_LOCAL_STORAGE_LATENCY": "true", "CPU_TIME": "true", "CUMULATIVE_CARDINALITY": "true", "CUMULATIVE_ROWS_SCANNED": "true", "EXTRA_INFO": "true", "LATENCY": "true", "OPERATOR_CARDINALITY": "true", "OPERATOR_NAME": "true", "OPERATOR_ROWS_SCANNED": "true", "OPERATOR_TIMING": "true", "OPERATOR_TYPE": "true", "QUERY_NAME": "true", "RESULT_SET_SIZE": "true", "ROWS_RETURNED": "true", "SYSTEM_PEAK_BUFFER_MEMORY": "true", "SYSTEM_PEAK_TEMP_DIR_SIZE": "true", "TOTAL_BYTES_READ": "true", "TOTAL_BYTES_WRITTEN": "true", "TOTAL_MEMORY_ALLOCATED": "true", "WAITING_TO_ATTACH_LATENCY": "true", "WAL_REPLAY_ENTRY_COUNT": "true", "WRITE_TO_WAL_LATENCY": "true"}
enable_http_logging(已弃用)启用 HTTP 日志BOOLEANtrue
enable_profiling启用 profiling,并设置输出格式(JSONQUERY_TREEQUERY_TREE_OPTIMIZERVARCHARNULL
enable_progress_bar_printenable_progress_bar 为 true 时,控制是否打印进度条BOOLEANtrue
enable_progress_bar启用进度条,在长查询时向终端输出进度BOOLEANtrue
http_logging_output(已弃用)HTTP 日志输出保存的文件;为空时打印到终端VARCHAR
profile_output, profiling_outputprofiling 输出保存的文件;为空时打印到终端VARCHAR
profiling_coverageprofiling 覆盖范围(SELECTALLVARCHARSELECT
profiling_modeprofiling 模式(STANDARDDETAILEDVARCHARNULL
progress_bar_time设置在开始打印进度条前,查询需运行的时长(毫秒)BIGINT2000
schema设置默认搜索 schema,等价于将 search_path 设为单个值VARCHARmain
search_path将默认 catalog 搜索路径设置为逗号分隔的值列表VARCHAR
streaming_buffer_size从流式结果拉取数据时可用于缓冲的最大内存(例如 1GB)VARCHAR976.5 KiB