┌────────────────────────────────────────────────────────┐│ DBbrain 智能诊断 │├────────────────────────────────────────────────────────┤│ ││ ┌──────────┐ ┌──────────────┐ ┌─────────────┐ ││ │ 慢查询 │ │ AI 诊断引擎 │ │ 优化建议 │ ││ │ 采集 │ → │ (大模型分析) │ → │ 生成 │ ││ └──────────┘ └──────────────┘ └─────────────┘ ││ ↑ ↑ ││ │ │ ││ ┌──────────┐ ┌──────────────┐ ││ │ pg_stat │ │ EXPLAIN │ ││ │ 统计信息 │ │ 执行计划 │ ││ └──────────┘ └──────────────┘ │└────────────────────────────────────────────────────────┘
<your-llm-model> 仅为占位;请替换为实际开通的模型,如腾讯混元(hunyuan-*)等。pg_stat_statements 取目标 SQL 时,生产环境建议使用 queryid 精确定位,不要使用模糊 LIKE 匹配,避免命中无关查询。-- 1) 获取慢查询的执行计划EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON)SELECT * FROM ordersWHERE customer_id = 12345AND 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));
-- 对慢查询使用智能索引推荐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']);
SELECT * FROM users WHERE email = 'user@example.com';-- 执行时间: 2.5s, Seq Scan on users (rows=1000000)
users 有100万行,email 列无索引。CREATE INDEX CONCURRENTLY idx_users_email ON users(email);-- 优化后执行时间: 0.5ms
pg_statistic 中的行数估算偏差超过100倍。ANALYZE 更新统计信息。ANALYZE orders;ANALYZE order_items;
SELECT * FROM products WHERE id NOT IN (SELECT product_id FROM discontinued);
-- 改写为 NOT EXISTS(避免 NULL 值问题且效率更高)SELECT p.* FROM products pWHERE NOT EXISTS (SELECT 1 FROM discontinued d WHERE d.product_id = p.id);
文档反馈