SuperAPI AI 工具集

hologres-query-optimizer

数据与分析

查看项目

更新于 10-15 19:55

技能介绍

用途:分析并优化 Hologres SQL 查询执行计划,帮助定位慢查询瓶颈。基于 Hologres V1.3.4x+,升级实例可提升执行计划可读性。

前置条件:需先安装 hologres-cli:pip install hologres-cli,并设置 export HOLOGRES_SKILL=hologres-query-optimizer。所有 SQL 执行与 GUC 参数操作依赖 hologres-cli 命令(hologres sql run、hologres guc show/set)。

主要能力:EXPLAIN <sql> 显示查询优化器估算计划,仅供参考;EXPLAIN ANALYZE <sql> 显示含真实运行时指标的实际情况,用于优化。执行计划自下而上阅读,箭头表示节点。EXPLAIN 输出含 cost、rows、width;rows=1000 通常表示统计缺失,需运行 ANALYZE <table>。EXPLAIN ANALYZE 含 Query Plan、ADVICE、Cost、Resource 四部分,指标包括 dop_in:dop_out、dop、time、rows、mem、open、get_next;time 为累计值,当前算子时间等于当前时间减子节点时间。ADVICE 会提示缺失索引、缺失统计、数据倾斜。Cost 含总耗时、优化器耗时、启动耗时、首块耗时、取结果耗时;Resource 含内存、CPU 时间、物理读字节、读字节。

常见算子:Seq Scan、Index Scan、Index Seek、Filter、Segment Filter、Cluster Filter、Bitmap Filter、Local Gather、Gather、Redistribution、Broadcast、Hash Join、Nested Loop、Cross Join、HashAggregate、Sort、Limit、ExecuteExternalSQL 等。

优化流程:对慢查询运行 EXPLAIN ANALYZE,查看 ADVICE,找出耗时最高的算子,再针对性优化:统计缺失运行 ANALYZE;出现 Redistribution 检查 distribution_key;大表作哈希表需更新统计;无索引可加聚簇或位图索引;PQE 执行需改写为 HQE;数据倾斜检查分布。

关键 GUC:SET optimizer_force_multistage_agg = on;SET optimizer_join_order = 'query' 或 'greedy';SET hg_experimental_enable_cross_join_rewrite = off。持久化可用 hologres guc set。

最佳实践:生产分析始终用 EXPLAIN ANALYZE;数据大幅变化后运行 ANALYZE;按 JOIN/GROUP BY 设计 distribution_key;为范围查询列设 clustering_key;低基数列用位图索引;确保小表作哈希表;尽量避免非等值连接;将 PQE 函数改写为 HQE。

限制:具体收费、价格、平台支持等信息暂未提供。