概述
性能模式 会禁用哪些功能
启用性能模式
使用 config 对象
使用模块级函数
使用简化导入
启用性能模式后,执行引擎会自动设为
chdb。无需另外调用 config.use_chdb()。何时使用性能模式
- 处理大型数据集 (数十万到数百万行)
- 运行以聚合为主的工作负载 (groupby、sum、mean、count)
- 行顺序不重要 (例如聚合结果、报表、仪表盘)
- 你希望获得最高的 SQL 吞吐量和最低的开销
- 需要关注内存使用量 (并行读取 Parquet,无中间 DataFrame)
- 你需要完全一致的 pandas 行为 (行顺序、MultiIndex、dtypes)
- 你依赖
first()/last()返回真正的第一行/最后一行 - 你使用依赖行顺序的
shift()、diff()、cumsum() - 你正在编写测试,将 DataStore 的输出与 pandas 进行比较
行为差异
行顺序
- 过滤结果
- GroupBy 聚合结果
- 未显式使用
sort_values()的head()/tail() first()/last()聚合
sort_values():
GroupBy 结果
聚合
单条 SQL 执行
ColumnExpr 的 groupby 聚合 (例如 ds[condition].groupby('col')['val'].sum()) 会以单条 SQL 查询执行,而不是像 pandas 模式那样分两步进行:
与执行引擎的比较
compat_mode) 和执行引擎 (execution_engine) 是两个相互独立的配置维度:
将
compat_mode='performance' 设为性能模式时,execution_engine 会自动设为 chdb,因为性能模式是为 SQL 执行而设计的。
使用性能模式测试
先排序再比较 (聚合、过滤器)
取值范围检查 (首/尾)
Schema 与计数 (LIMIT 不使用 ORDER BY)
最佳实践
1. 尽早在脚本中启用
2. 当顺序很重要时,显式指定排序
3. 用于批处理/ETL 类工作负载
4. 在同一会话中切换模式
- 执行引擎 — 引擎选择 (auto/chdb/pandas)
- 性能指南 — 通用优化建议
- 与 pandas 的主要差异 — 行为差异