跳转到主要内容
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 执行:

何时使用 chDB

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

性能特性

局限性

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

pandas 模式

强制所有操作都通过 pandas 进行:

何时使用

  • 需要与 pandas 进行兼容性测试时
  • 需要使用 pandas 特有功能时
  • 调试与 pandas 相关的问题时
  • 数据已采用 pandas 格式时

性能特性


Cross-DataStore 引擎

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

示例


引擎选择逻辑

自动模式 决策树

函数级别覆盖

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

性能对比

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

最佳实践

1. 先使用 自动模式

2. 先分析,再强制指定

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

4. 使用 explain() 理解执行过程


故障排查

问题:操作速度低于预期

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

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

性能模式如果你正在处理高强度聚合工作负载,且不需要与 pandas 输出完全兼容 (如行顺序、MultiIndex、Dtype 修正) ,可以考虑使用性能模式。它会自动将 engine 设置为 chdb,并消除所有 Pandas 兼容性开销。