SuperAPI AI 工具集

performance-optimization

数据与分析

查看项目

更新于 10-15 09:31

技能介绍

用途

该技能用于为智能体装备数据湖仓(Lakehouse)性能优化能力,帮助检测并解决数据湖仓中的性能瓶颈。湖仓若缺乏日常维护,性能会显著下降,因此该技能要求智能体主动提出跨 Spark、Trino 和 Databricks 的高级调优建议。

主要能力

1. 小文件检测与合并

  • 当平均文件大小小于 50 MB 时,触发“小文件警告”。
  • 建议在表属性上设置目标文件大小,使写入器自动优化。示例(Delta Lake / Databricks):
ALTER TABLE table_name SET TBLPROPERTIES ('delta.targetFileSize' = '134217728');

2. 高级布局与聚簇

不再盲目推荐简单的 ZORDER,而是评估表大小和写入模式:

  • Databricks Liquid Clustering:对于频繁更新或查询模式多变的表,强烈建议使用 Liquid Clustering 替代 Z-Ordering。
ALTER TABLE table_name CLUSTER BY (col1, col2);
  • Iceberg 隐藏分区:检查用户是否手动提取日期字符串(如 date_format(ts, 'yyyy-MM-dd')),建议改用 Iceberg 原生分区转换(如 partition by days(ts))。

3. 数据跳过与 Bloom Filter

当对高基数字符串(如 user_id 或 uuid)进行过滤的查询较慢时,建议启用 Bloom Filter 索引。示例(Databricks Delta):

CREATE BLOOMFILTER INDEX ON TABLE my_table FOR COLUMNS(user_id OPTIONS (fpp=0.1, numItems=50000000));

4. 查询优化与 CBO(基于代价的优化器)

当用户提供慢速 Spark SQL 查询时:

  • 检查 SortMergeJoin 与 BroadcastHashJoin,对小维度表建议使用 /*+ BROADCAST(table) */。
  • 建议运行 ANALYZE TABLE my_table COMPUTE STATISTICS,以便引擎利用 CBO。

使用方式

该技能以“性能报告”格式输出结果,结构如下:

### 🚀 Enterprise Performance Report: `[Table Name]`

**Health Score:** [e.g., 65/100]

#### ⚠️ Issues Detected
1. **Small File Problem:** Average file size is 12 MB (Target: 128 MB).
2. **Missing Statistics:** CBO cannot optimize joins because table stats are missing.

#### 🛠️ Recommended Actions
- [ ] **Liquid Clustering:** Migrate from Z-Ordering to Liquid Clustering for better write concurrency. `ALTER TABLE [table] CLUSTER BY (...)`
- [ ] **Compute Stats:** Execute `ANALYZE TABLE [table] COMPUTE STATISTICS`.

适用场景

  • 数据湖仓日常维护与性能巡检。
  • 排查小文件过多、分区设计不合理导致的查询缓慢。
  • 针对 Spark、Trino、Databricks 环境的表布局与查询调优。
  • 为慢速 Spark SQL 查询提供优化方向。

限制

资料未提供该技能的具体安装方式、依赖环境、支持的版本范围、收费模式或价格信息,这些内容暂未提供。