跳到主要内容

查询管理

实时监控活动查询、查看查询历史记录并取消长时间运行的查询。全面了解查询工作负载,便于调试和容量规划。

概述

查询管理提供:

  • 主动查询监控— 查看所有当前正在运行的查询,包括其持续时间、SQL 语句和资源使用情况。
  • 查询历史记录— 查看最近完成的查询及其执行详情
  • 查询取消— 按需取消长时间运行或失控的查询
  • 诊断详情— 查看每个查询的并行执行状态和分区计数

配置

TOML

[query_management]
enabled = true
history_size = 100 # 历史查询数量

API 参考

所有查询管理接口都需要管理员身份验证。

查询列表

查看所有当前正在运行的查询:

curl -H "Authorization: Bearer $TOKEN" \
http://localhost:8000/api/v1/queries/active

响应:

{
"success": true,
"data": [
{
"id": "q-abc123",
"sql": "SELECT * FROM production.sensors WHERE timestamp > NOW() - INTERVAL '1 hour'",
"status": "running",
"token_name": "grafana-readonly",
"remote_addr": "10.0.1.50:54321",
"started_at": "2026-02-13T10:30:00Z",
"duration_ms": 2500,
"is_parallel": true,
"partition_count": 4
},
{
"id": "q-def456",
"sql": "SELECT COUNT(*) FROM analytics.events GROUP BY event_type",
"status": "running",
"token_name": "dashboard-token",
"remote_addr": "10.0.1.51:54322",
"started_at": "2026-02-13T10:30:01Z",
"duration_ms": 1200,
"is_parallel": false,
"partition_count": 1
}
]
}

查询记录

查看最近完成的查询:

curl -H "Authorization: Bearer $TOKEN" \
http://localhost:8000/api/v1/queries/history

响应:

{
"success": true,
"data": [
{
"id": "q-ghi789",
"sql": "SELECT AVG(temperature) FROM production.sensors GROUP BY device_id",
"status": "completed",
"token_name": "analytics-token",
"remote_addr": "10.0.1.52:54323",
"started_at": "2026-02-13T10:29:00Z",
"duration_ms": 850,
"is_parallel": true,
"partition_count": 3
}
]
}

获取查询详情

按 ID 检查特定查询:

curl -H "Authorization: Bearer $TOKEN" \
http://localhost:8000/api/v1/queries/q-abc123

取消查询

停止长时间运行或失控的查询:

curl -X DELETE -H "Authorization: Bearer $TOKEN" \
http://localhost:8000/api/v1/queries/q-abc123

响应:

{
"success": true,
"data": {
"message": "Query cancelled",
"id": "q-abc123"
}
}

用例

调试慢查询

  1. 检查活动查询以查找长时间运行的操作
  2. 查看 SQL 和执行详情
  3. 如果查询消耗过多资源,请取消查询。
  4. 优化查询并重试
# Find queries running longer than expected
curl -H "Authorization: Bearer $TOKEN" \
http://localhost:8000/api/v1/queries/active

# Cancel a specific runaway query
curl -X DELETE -H "Authorization: Bearer $TOKEN" \
http://localhost:8000/api/v1/queries/q-abc123

性能测试

查看查询历史记录以了解工作负载模式:

  • 哪些词条产生的查询最多?
  • 典型的查询持续时间是多久?
  • 有多少个查询并行运行?
  • 查询是否涉及多个分区(表明时间范围较大)?

响应时间

查询事故期间:

  1. 列出所有活动查询以确定原因
  2. 立即取消违规查询
  3. 回顾历史,了解发生了哪些变化
  4. 应用查询治理策略以防止再次发生

最佳实践

  1. 设置合适的历史记录大小——默认值 (100) 适用于大多数部署。如果需要更多历史记录进行调试,请增加此值。
  2. 在仪表板中监控活动查询— 从监控系统轮询活动查询接口,以便及早发现长时间运行的查询。
  3. 结合查询治理——使用治理策略自动防止失控查询,并使用查询管理实现可见性和手动干预。
  4. 检查并行查询限制——分区数高的查询跨越的时间范围很大。考虑添加时间限制以提高性能。

后续步骤