DataStore 性能分析
DataStore 分析工具可帮助你测量执行时间并定位性能瓶颈。
快速入门
启用性能分析
Profiler API
获取 Profiler 实例
report()
显示性能报告。
参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
min_duration_ms | float | 0.1 | 仅显示持续时间 >= 此值的步骤 |
示例输出:
报告显示:
- 每个步骤的持续时间(毫秒)
- 相对于父步骤/总时间的百分比
- 操作的分层嵌套结构
- 每个步骤的元数据(例如,
ops_count、ops)
step()
手动为一段代码计时。
clear()
清除所有性能分析数据。
summary()
获取一个以步骤名称为键、持续时间(毫秒)为值的字典。
示例输出:
理解报告
步骤名称
| 步骤名称 | 描述 |
|---|---|
Total Execution | 总执行时间 |
Query Planning | 查询规划耗时 |
SQL Segment N | 执行第 N 个 SQL 段 |
SQL Execution | 实际执行 SQL 查询 |
Result to DataFrame | 将结果转换为 pandas DataFrame |
Cache Check | 检查查询缓存 |
Cache Write | 将结果写入缓存 |
耗时
- Planning steps(查询规划):通常较快
- Execution steps(SQL 执行):实际执行计算的阶段
- Transfer steps(结果到 DataFrame):将数据转换为 pandas 的过程
定位瓶颈
分析模式
分析单个查询
分析多个查询的性能
方法对比
优化提示
1. 检查 SQL 执行时间
如果 SQL 执行 是瓶颈:
- 添加更多过滤条件以减少扫描的数据量
- 使用 Parquet 而不是 CSV
- 检查是否存在合适的索引(针对数据库数据源)
2. 检查 I/O 时间
如果 read_csv 或 read_parquet 是瓶颈:
- 使用 Parquet(列式、压缩)
- 只读取所需的列
- 如有可能,在数据源端进行过滤
3. 检查数据传输
如果 to_df 很慢:
- 结果集可能过大
- 添加更多过滤条件或限制返回的行数
- 使用
head()进行数据预览