云数据库 PostgreSQL AI 辅助慢 SQL 诊断与优化

云数据库 PostgreSQL 结合 DBbrain 智能运维平台和 AI 大模型,提供慢 SQL 自动诊断与优化建议能力。系统自动采集慢查询日志,利用 AI 模型分析执行计划,给出索引优化、SQL 改写、参数调整等建议。

相关产品
云数据库 PostgreSQL 产品页,含版本规格、价格与购买入口。

一、功能架构

┌────────────────────────────────────────────────────────┐│ DBbrain 智能诊断 │├────────────────────────────────────────────────────────┤│ ││ ┌──────────┐ ┌──────────────┐ ┌─────────────┐ ││ │ 慢查询 │ │ AI 诊断引擎 │ │ 优化建议 │ ││ │ 采集 │ → │ (大模型分析) │ → │ 生成 │ ││ └──────────┘ └──────────────┘ └─────────────┘ ││ ↑ ↑ ││ │ │ ││ ┌──────────┐ ┌──────────────┐ ││ │ pg_stat │ │ EXPLAIN │ ││ │ 统计信息 │ │ 执行计划 │ ││ └──────────┘ └──────────────┘ │└────────────────────────────────────────────────────────┘

二、控制台操作

1. 登录 数据库智能管家 DBbrain 控制台。

2. 在实例管理页选择 PostgreSQL 实例。

3. 进入 慢 SQL 分析 → AI 诊断。

4. 查看每条慢查询的 AI 诊断报告和优化建议。

三、SQL 层面使用

注意:说明:

注意:以下示例的大模型名 <your-llm-model> 仅为占位;请替换为实际开通的模型,如腾讯混元(hunyuan-*)等。

结合 tencentdb_ai 插件,可以在 SQL 内直接对慢查询进行 AI 分析。注意:示例中通过 pg_stat_statements 取目标 SQL 时,生产环境建议使用 queryid 精确定位,不要使用模糊 LIKE 匹配,避免命中无关查询。

— 1) 获取慢查询的执行计划EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON)SELECT * FROM ordersWHERE customer_id = 12345 AND order_date > '2026-01-01'ORDER BY order_date DESC;– 2) 使用 AI 分析执行计划(生产环境建议按 queryid 取目标 SQL)SELECT tencentdb_ai.chat_completions( '<your-llm-model>', '你是一位 PostgreSQL 性能优化专家。请分析以下执行计划,找出性能瓶颈并给出优化建议:' || E'\\n' || (SELECT query FROM pg_stat_statements WHERE queryid = $1));

四、结合 tencentdb_index_advisor

— 对慢查询使用智能索引推荐SELECT * FROM tencentdb_index_advisor.advise_index( 'SELECT * FROM orders WHERE customer_id = $1 AND order_date > $2 ORDER BY order_date DESC');– 批量工作负载分析SELECT * FROM tencentdb_index_advisor.advise_index_workload( ARRAY[ 'SELECT * FROM orders WHERE customer_id = $1', 'SELECT * FROM orders WHERE status = $1 AND created_at > $2', 'SELECT count(*) FROM orders WHERE product_id = $1' ]);

五、场景一:缺失索引

问题 SQL:

SELECT * FROM users WHERE email = 'user@example.com';– 执行时间: 2.5s, Seq Scan on users (rows=1000000)

AI 诊断结论:

·表 users 有100万行,email 列无索引。

·全表顺序扫描导致耗时过长。

优化建议:

CREATE INDEX CONCURRENTLY idx_users_email ON users(email);– 优化后执行时间: 0.5ms

六、场景二:统计信息过期

问题:查询计划选择了错误的 JOIN 顺序

AI 诊断结论:

·pg_statistic 中的行数估算偏差超过100倍。

·建议执行 ANALYZE 更新统计信息。

优化建议:

ANALYZE orders;ANALYZE order_items;

七、场景三:SQL 改写

问题 SQL:

SELECT * FROM products WHERE id NOT IN (SELECT product_id FROM discontinued);

AI 优化建议:

— 改写为 NOT EXISTS(避免 NULL 值问题且效率更高)SELECT p.* FROM products pWHERE NOT EXISTS (SELECT 1 FROM discontinued d WHERE d.product_id = p.id);

八、相关文档

·智能索引推荐(tencentdb_index_advisor)。

·tencentdb_ai 插件功能介绍。

·DBbrain 产品文档。

赞 (0)
上一篇 4天前
下一篇 4天前