跳到主要内容

查询配置

引入或更新:v1.2.901

本页介绍 databend-query.toml 配置文件中可用的 Query 节点配置。

  • 下表中列出的某些参数可能未出现在 databend-query.toml 中。如需使用这些参数,可手动将其添加到文件。

  • 您可在 GitHub 上找到示例配置文件,这些文件为不同部署环境配置了 Databend。它们仅用于内部测试,请勿直接修改。若您的部署场景类似,可参考这些文件编辑自己的配置。

[query] 部分

[query] 部分可用参数如下:

参数描述
max_active_sessions最大活跃会话数。
shutdown_wait_timeout_ms等待超时时间(毫秒)。
flight_api_address监听 Databend-Query 集群 shuffle 数据的 IP 地址与端口。
admin_api_addressAdmin REST API 地址。
metric_api_addressMetrics REST API 地址。
mysql_handler_hostMySQL 查询处理器主机名。
mysql_handler_portMySQL 查询处理器端口。
clickhouse_http_handler_hostClickHouse HTTP 查询处理器主机名。
clickhouse_http_handler_portClickHouse HTTP 查询处理器端口。
http_handler_hostHTTP API 查询处理器主机名。
http_handler_portHTTP API 查询处理器端口。
flight_sql_handler_host实验性 Arrow Flight SQL API 查询处理器主机名。
flight_sql_handler_port实验性 Arrow Flight SQL API 查询处理器端口。
tenant_id默认租户 ID。
cluster_id默认集群 ID。
table_engine_memory_enabled是否启用 Memory 表引擎(Memory Table Engine)。
max_running_queries可同时执行的最大查询数,默认为 8,0 表示无限制。
data_retention_time_in_days_max设置 data_retention_time_in_days 的上限,默认为 90 天。

[query.users] 部分

[[query.users]] 部分可用参数如下。有关管理员用户配置的更多信息,请参见配置管理员用户

参数描述
name用户名。
auth_type认证类型(如 no_password、double_sha1_password、sha256_password)。
auth_string认证字符串(如密码的 SHA-1 或 SHA-256 哈希)。

[query.settings] 部分

[query.settings] 部分可用参数如下:

参数描述
aggregate_spilling_memory_ratio聚合操作触发磁盘溢出的内存阈值百分比。当内存使用超过总可用内存的该百分比时,数据将溢出到对象存储以避免内存耗尽。例如设为 60,则内存使用超过 60% 时触发溢出。
join_spilling_memory_ratioJoin 操作触发磁盘溢出的内存阈值百分比。当内存使用超过总可用内存的该百分比时,数据将溢出到对象存储以避免内存耗尽。例如设为 60,则内存使用超过 60% 时触发溢出。

[log] 部分

该部分可包含以下子部分:[log.file]、[log.stderr]、[log.query] 和 [log.tracing]。

[log.file] 部分

[log.file] 部分可用参数如下:

参数描述
on是否启用文件日志,默认为 true
dir日志文件存储路径。
level日志级别,遵循 env_logger 语法:errorwarninfodebugtraceoff。默认为 warn,databend_=info,openraft=info
format日志格式:jsontext,默认为 json
limit保留的最大日志文件数,默认为 48

[log.stderr] 部分

[log.stderr] 部分可用参数如下:

参数描述
on是否启用 stderr 日志,默认为 false
level日志级别,遵循 env_logger 语法:errorwarninfodebugtraceoff。默认为 warn,databend_=info,openraft=info
format日志格式:jsontext,默认为 json

[log.query] 部分

[log.query] 部分可用参数如下:

参数描述
on是否将查询执行详情记录到日志目录的 query-details 文件夹,默认为启用。存储空间有限时可考虑关闭。

[log.tracing] 部分

[log.tracing] 部分可用参数如下:

参数描述
capture_log_level执行期间捕获追踪的日志级别(DEBUG、TRACE、INFO、WARN 或 ERROR)。
on是否启用追踪,默认为 false,设为 true 启用。
otlp_endpoint用于追踪的 OpenTelemetry Protocol(OTLP)端点,默认为 http://127.0.0.1:4317,可替换为所需端点。

[log.history] 部分

[log.history] 部分可用参数如下:

参数描述
on是否启用历史日志功能,默认为 false,设为 true 启用历史表。
log_only启用后,节点将转换任务委托给其他节点,减轻自身负载。
interval历史日志刷新的间隔(秒),默认为 2。
stage_name临时保存日志数据的暂存区名称,默认为唯一值以避免冲突。
level历史日志的日志级别(DEBUG、TRACE、INFO、WARN 或 ERROR),默认为 WARN。
retention_interval触发保留流程检查并清理旧数据的间隔(小时),默认为 24。
tables指定要启用的历史表及其保留策略。该数组中的每个对象包含 table_name(历史表名)和 retention(该表的保留时长,单位小时)。
storage指定历史表的存储位置。默认与 [storage] 部分配置相同,也可单独指定,格式与 [storage] 部分完全一致。

tables 为对象数组,每个对象包含两个参数:

参数描述
table_name历史表名(当前支持:log_historyprofile_historyquery_historylogin_history
retention该表的保留时长(小时)。
注意:log_history 表默认启用。

若指定了 storage,原有默认历史表将被删除并以新存储配置重建。同一租户下所有节点必须使用相同的 storage 配置以保证一致性。

[meta] 部分

[meta] 部分可用参数如下:

参数描述
username连接 Meta 服务的用户名,默认为 "root"。
password连接 Meta 服务的密码。建议使用环境变量 META_PASSWORD 提供,默认为 "root"。
endpoints查询服务器可连接的 meta 服务器端点列表。为提升连接可靠性,建议列出集群内多个 meta 服务器作为备份。示例:["192.168.0.1:9191", "192.168.0.2:9191"],默认为 ["0.0.0.0:9191"]。
client_timeout_in_second连接 meta 服务器的超时时间(秒),默认为 60。
auto_sync_interval查询服务器自动从集群 meta 服务器同步端点列表的间隔(秒)。启用后,Databend-query 会定期联系 Databend-meta 获取 grpc_api_advertise_host:grpc-api-port 列表。设为 0 禁用同步,默认为 60。
unhealth_endpoint_evict_time内部不再向不健康 meta 节点端点查询的时间(秒),默认为 120。

[storage] 部分

[storage] 部分可用参数如下:

参数描述
type存储类型,可选值:fs、s3、azblob、gcs、oss、cos。
allow_insecure默认为 false。在 MinIO 部署或通过 http:// 前缀 URL 加载数据时需设为 true,否则报错:“copy from insecure storage is not allowed. Please set allow_insecure=true”。
storage_retry_timeout(秒) OpenDAL 读写操作超时后的重试阈值,默认为 10
storage_retry_io_timeout(秒) OpenDAL HTTP 请求超时后的重试阈值,默认为 60
storage_pool_max_idle_per_host每主机最大连接池大小,默认为无限制。
storage_connect_timeout(秒) TCP 连接超时,默认为 30
storage_tcp_keepalive(秒) TCP keepalive 持续时间,默认为无。
storage_max_concurrent_io_requests最大并发 I/O 请求数,默认为无限制。

[storage.fs] 部分

[storage.fs] 部分可用参数如下:

参数描述
data_path数据存储路径。

[storage.s3] 部分

[storage.s3] 部分可用参数如下:

参数描述
bucket类 Amazon S3 存储桶名称。
endpoint_url类 S3 存储服务的 URL 端点,默认为 "https://s3.amazonaws.com"。
access_key_id存储服务认证所需的 Access Key ID。
secret_access_key存储服务认证所需的 Secret Access Key。
enable_virtual_host_style是否启用虚拟主机风格寻址的布尔标志。
external_id认证用的 External ID。
master_key认证用的主密钥。
region类 S3 存储服务的区域。
role_arn认证用的 ARN(Amazon Resource Name)。
root指定桶内 Databend 操作的目录。示例:若桶根目录有 myroot 文件夹,则 root = "myroot/"
security_token认证用的安全令牌。

[storage.azblob] 部分

[storage.azblob] 部分可用参数如下:

参数描述
endpoint_urlAzure Blob Storage 的 URL 端点,如 https://<your-storage-account-name>.blob.core.windows.net
containerAzure 存储容器名称。
account_nameAzure 存储账户名称。
account_keyAzure Blob Storage 认证用的账户密钥。
root指定容器内 Databend 操作的目录。示例:若容器根目录有 myroot 文件夹,则 root = "myroot/"

[storage.gcs] 部分

[storage.gcs] 部分可用参数如下:

参数描述
bucketGoogle Cloud Storage 桶名称。
credential用于 GCS 认证的 base64 编码服务账户密钥文件。
root指定桶内 Databend 操作的目录。示例:若桶根目录有 myroot 文件夹,则 root = "myroot/"

获取 credential 的方法:按 Google 文档创建服务账户密钥生成并下载密钥文件,然后执行:

base64 -i -o ~/Desktop/base64-encoded-key.txt

将其转为 base64 字符串。

[storage.oss] 部分

[storage.oss] 部分可用参数如下:

参数描述
bucket阿里云 OSS 桶名称。
endpoint_url阿里云 OSS 的 URL 端点。
access_key_id阿里云 OSS 认证用的 Access Key ID。
access_key_secret阿里云 OSS 认证用的 Access Key Secret。
presign_endpoint_url阿里云 OSS 预签名操作的 URL 端点。
root指定桶内 Databend 操作的目录。示例:若桶根目录有 myroot 文件夹,则 root = "myroot/"

[storage.obs] 部分

以下是 [storage.obs] 部分中可用的参数列表:

参数描述
bucket您的华为云 OBS 桶名称。
endpoint_url华为云 OBS 的 URL 端点。
access_key_id用于华为云 OBS 认证的 Access Key ID。
secret_access_key用于华为云 OBS 认证的 Secret Access Key。

[storage.cos] 部分

[storage.cos] 部分可用参数如下:

参数描述
bucket腾讯云 COS 桶名称。
endpoint_url腾讯云 COS 的 URL 端点(可选)。
secret_id腾讯云 COS 认证用的 Secret ID。
secret_key腾讯云 COS 认证用的 Secret Key。
root指定桶内 Databend 操作的目录。示例:若桶根目录有 myroot 文件夹,则 root = "myroot/"

[cache] 部分

[cache] 部分可用参数如下:

参数描述
data_cache_storage表数据缓存的存储类型。可选:"none"(禁用表数据缓存)、"disk"(启用磁盘缓存),默认为 "none"。
iceberg_table_meta_count缓存的 Iceberg 表元数据条目数量,设为 0 禁用元数据缓存。

[cache.disk] 部分

[cache.disk] 部分可用参数如下:

参数描述
path磁盘缓存的存储路径。
max_bytes磁盘缓存的最大数据量(字节),默认为 21474836480 字节(20 GB)。

[spill] 部分

Databend 支持溢出存储(Spill Storage)以处理超出可用内存的大型查询。统一配置格式为所有存储类型提供一致模式并支持自动检测。

[spill.storage] 部分

参数描述
type存储类型,可选:fs(文件系统)、s3azblobgcsosscos 等。

[spill.storage.fs] 部分(文件系统存储)

参数描述
data_path溢出数据在本地文件系统的存储目录路径。
reserved_space_percentage为系统保留、不用于溢出的磁盘空间百分比,防止磁盘被写满,确保系统稳定。默认值:30
max_bytes允许溢出到本地文件系统的最大字节数。达到限制后,新溢出操作自动回退到主数据存储(远程存储),保证查询不中断。默认值:无限制。

示例(文件系统存储):

[spill.storage]
type = "fs"

[spill.storage.fs]
data_path = "/fast-ssd/spill"
reserved_space_percentage = 25.0
max_bytes = 107374182400 # 100GB

[spill.storage.s3] 部分(S3 远程存储)

S3 溢出存储使用与 storage.s3 部分 相同的参数。

示例(S3 存储):

[spill.storage]
type = "s3"

[spill.storage.s3]
bucket = "my-spill-bucket"
region = "us-west-2"
access_key_id = "your-access-key"
secret_access_key = "your-secret-key"
旧格式(向后兼容)
备注

旧格式仅用于向后兼容。若 Databend 版本早于 v1.2.901,请使用此格式;新部署请使用上述统一格式。

参数描述
spill_local_disk_path溢出数据在本地磁盘的存储目录路径。
spill_local_disk_reserved_space_percentage为系统保留、不用于溢出的磁盘空间百分比,防止磁盘被写满,确保系统稳定。默认值:30
spill_local_disk_max_bytes允许溢出到本地磁盘的最大字节数。达到限制后,新溢出操作自动回退到主数据存储(远程存储),保证查询不中断。默认值:无限制。

示例(旧格式):

[spill]
spill_local_disk_path = "/data/spill"
spill_local_disk_reserved_space_percentage = 30.0
spill_local_disk_max_bytes = 53687091200