跳转到主要内容
DataStore 可使用不同的后端来执行操作。本指南介绍如何配置并优化引擎选择。

可用引擎

配置引擎

全局配置

查看当前引擎


自动模式

auto 模式 (默认) 下,DataStore 会为每个操作选择最佳引擎:

在 chDB 中执行的操作

  • 与 SQL 兼容的过滤 (filter(), where())
  • 列选择 (select())
  • 排序 (sort(), orderby())
  • 分组和聚合 (groupby().agg())
  • 连接 (join(), merge())
  • 去重 (distinct(), drop_duplicates())
  • 限制返回结果数量 (limit(), head(), tail())

在 pandas 中执行的操作

  • 自定义 apply 函数 (apply(custom_func))
  • 带有自定义聚合的复杂数据透视表
  • 无法用 SQL 表达的操作
  • 当输入已经是 pandas DataFrame 时

示例


chDB 模式

强制所有操作均通过 ClickHouse SQL 执行:

适用场景

  • 处理大型数据集 (数百万行)
  • 高强度聚合类工作负载
  • 需要最大化 SQL 优化时
  • 需要在所有操作中保持行为一致时

性能表现

限制事项

  • 可能不支持自定义 Python 函数
  • 某些 pandas 特有功能需要先进行转换

pandas 模式

强制所有操作均通过 pandas 执行:

何时使用

  • 与 pandas 的兼容性测试
  • 使用 pandas 专有功能
  • 调试与 pandas 相关的问题
  • 当数据已为 pandas 格式时

性能特性


跨 DataStore 引擎

为需要组合不同 DataStore 中列的操作配置引擎:

示例


引擎选择逻辑

自动模式决策树

函数级别覆盖

某些函数可以显式指定其引擎:
详见函数配置

性能对比

1000 万行数据的基准测试结果: 关键结论:
  • chDB 在聚合和复杂管道方面表现尤为出色
  • 对于简单的单步操作,pandas 略快一些
  • 使用 auto 模式可同时兼顾两者的优势

最佳实践

1. 优先使用自动模式

2. 强制指定前先做性能分析

3. 为特定工作负载强制指定引擎

4. 使用 explain() 理解执行情况


故障排查

问题:操作速度低于预期

问题:chdb 模式下不支持该操作

问题:大量数据导致的内存问题

性能模式如果您正在运行高强度聚合工作负载,且不需要与 pandas 输出完全兼容 (如行顺序、MultiIndex、dtype 修正) ,可考虑使用 性能模式。它会自动将引擎设置为 chdb,并去除所有 Pandas 兼容性开销。
最后修改于 2026年7月1日