用途
lakehouse-performance 面向数据湖仓场景,帮助智能体主动发现性能瓶颈并给出优化建议。随着湖仓长期运行,缺乏例行维护会导致性能显著下降,该技能用于在 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]
健康评分: [例如 65/100]
⚠️ 检测到的问题
- 小文件问题: 平均文件大小为 12 MB(目标:128 MB)。
- 缺失统计信息: 由于表统计信息缺失,CBO 无法优化 join。
🛠️ 推荐操作
- [ ] Liquid Clustering: 从 Z-Ordering 迁移到 Liquid Clustering,以获得更好的写入并发性。
ALTER TABLE [table] CLUSTER BY (...) - [ ] 计算统计信息: 执行
ANALYZE TABLE [table] COMPUTE STATISTICS。
适用场景
- 数据湖仓日常维护与健康检查。
- Spark、Trino、Databricks 查询性能调优。
- 小文件、分区布局、数据跳过和统计信息缺失等常见问题的诊断。
限制
该技能聚焦于性能检测与建议,具体阈值、参数和可用语法可能因引擎与版本不同而有所差异,需结合实际环境验证。关于收费、价格等信息暂未提供。