← 返回
未分类

Hologres Slow Query Analysis

Hologres slow query log analysis and diagnosis skill. Use for analyzing slow queries, failed queries, query performance diagnosis, and log management in Alib...
Hologres慢查询日志分析与诊断技能:用于分析慢查询、失败查询、查询性能诊断及日志管理(阿里云)。
wenbingyu
未分类 clawhub v0.2.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 224
下载
💾 0
安装
1
版本
#latest

概述

Prerequisites

This skill requires hologres-cli to be installed first:

pip install hologres-cli
export HOLOGRES_SKILL=hologres-slow-query-analysis

All SQL execution and GUC parameter operations depend on hologres-cli commands (hologres sql run, hologres guc set).

Hologres Slow Query Analysis

Diagnose and analyze slow/failed queries in Alibaba Cloud Hologres using the hologres.hg_query_log system table.

Version Requirements

Hologres VersionFeature
--------------------------
V0.10+Basic slow query log
V2.2+SQL fingerprint (digest)
V2.2.7+Default threshold 100ms
V3.0.2+Aggregated records for <100ms queries

Quick Start

1. Check Permissions

-- Superuser: view all DB logs
ALTER USER "cloud_account_id" SUPERUSER;

-- Or join pg_read_all_stats group
GRANT pg_read_all_stats TO "cloud_account_id";

-- For current DB only (SPM model)
CALL spm_grant('<db_name>_admin', 'cloud_account_id');

2. Basic Query Count

SELECT count(*) FROM hologres.hg_query_log;

3. Recent Slow Queries (10 min)

SELECT status AS "Status",
       duration AS "Duration(ms)",
       query_start AS "Start Time",
       (read_bytes/1048576)::text || ' MB' AS "Read",
       (memory_bytes/1048576)::text || ' MB' AS "Memory",
       (cpu_time_ms/1000)::text || ' s' AS "CPU",
       query_id AS "QueryID",
       query::char(50) AS "Query"
FROM hologres.hg_query_log
WHERE query_start >= now() - interval '10 min'
ORDER BY duration DESC
LIMIT 100;

Core Diagnostic Workflows

Workflow 1: Find Resource-Heavy Queries

Use when CPU/memory usage is high.

-- Top 10 CPU-consuming queries (past day)
SELECT digest, avg(cpu_time_ms), sum(cpu_time_ms)
FROM hologres.hg_query_log
WHERE query_start >= CURRENT_DATE - INTERVAL '1 day'
  AND digest IS NOT NULL AND usename != 'system'
GROUP BY 1 ORDER BY 3 DESC LIMIT 10;

Workflow 2: Find Failed Queries

SELECT status, message::char(100), duration, query_start, query_id, query::char(80)
FROM hologres.hg_query_log
WHERE query_start BETWEEN '2024-01-01 00:00:00'::timestamptz 
      AND '2024-01-01 01:00:00'::timestamptz
  AND status = 'FAILED'
ORDER BY query_start ASC LIMIT 100;

Workflow 3: Query Phase Analysis

Identify bottleneck phase (optimization/startup/execution).

SELECT status, duration AS "Total(ms)",
       optimization_cost AS "Optimize(ms)",
       start_query_cost AS "Startup(ms)",
       get_next_cost AS "Execute(ms)",
       duration - optimization_cost - start_query_cost - get_next_cost AS "Other(ms)",
       query_id, query::char(50)
FROM hologres.hg_query_log
WHERE query_start >= now() - interval '10 min'
ORDER BY duration DESC LIMIT 100;

Workflow 4: Compare with Yesterday

SELECT query_date, count(1), sum(read_bytes), sum(cpu_time_ms)
FROM hologres.hg_query_log
WHERE query_start >= now() - interval '3 h'
GROUP BY query_date
UNION ALL
SELECT query_date, count(1), sum(read_bytes), sum(cpu_time_ms)
FROM hologres.hg_query_log
WHERE query_start >= now() - interval '1d 3h' AND query_start <= now() - interval '1d'
GROUP BY query_date;

Key Fields Reference

FieldDescription
--------------------
query_idUnique query identifier
digestSQL fingerprint (MD5 hash)
durationTotal query time (ms)
cpu_time_msCPU time consumed
memory_bytesPeak memory usage
read_bytesData read volume
engine_typeQuery engine (HQE/PQE/SDK/PG)
optimization_costPlan generation time
start_query_costQuery startup time
get_next_costExecution time

Configuration

-- Set slow query threshold (DB level, superuser only)
ALTER DATABASE dbname SET log_min_duration_statement = '250ms';

-- Session level
SET log_min_duration_statement = '250ms';

-- Set log retention (V3.0.27+, 3-30 days)
ALTER DATABASE dbname SET hg_query_log_retention_time_sec = 2592000;

Or use the CLI for database-level settings:

hologres guc set log_min_duration_statement '250ms'
hologres guc set hg_query_log_retention_time_sec 2592000

References

DocumentContent
-------------------
diagnostic-queries.mdComplete diagnostic SQL collection
log-export.mdExport logs to internal/external tables
configuration.mdConfiguration parameters

Best Practices

  1. Always filter by query_start for better performance
  2. Use digest to group similar queries for pattern analysis
  3. Check engine_type - PQE queries may need optimization
  4. For start_query_cost high: check locks or resource contention
  5. For get_next_cost high: optimize SQL or add indexes
  6. Regular cleanup: set appropriate retention period

版本历史

共 1 个版本

  • v0.2.0 当前
    2026-05-21 15:19 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

Hologres Privileges

wenbingyu
使用 PostgreSQL 标准授权模型(专家权限模型)进行 Hologres 权限管理,用于创建用户、授予/撤销 Schema/表权限
★ 0 📥 270

Hologres Uv Compute

wenbingyu
使用动态表和 RoaringBitmap 在 Hologres 中进行 UV/PV 实时去重计算,适用于构建增量 UV/PV 流水线,Roaring...
★ 0 📥 252

Hologres Bsi Profile Analysis

wenbingyu
Hologres BSI位切片索引画像分析技能,用于用户画像与标签计算,涵盖BSI表设计、数据导入、属性+行为标签联合人群圈选、GMV分析、标签分布统计、TopK查询及分桶并行计算等场景。
★ 0 📥 274