查询管理
实时监控活动查询、查看查询历史记录并取消长时间运行的查询。全面了解查询工作负载,便于调试和容量规划。
概述
查询管理提供:
- 主动查询监控— 查看所有当前正在运行的查询,包括其持续时间、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"
}
}
用例
调试慢查询
- 检查活动查询以查找长时间运行的操作
- 查看 SQL 和执行详情
- 如果查询消耗过多资源,请取消查询。
- 优化查询并重试
# 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
性能测试
查看查询历史记录以了解工作负载模式:
- 哪些词条产生的查询最多?
- 典型的查询持续时间是多久?
- 有多少个查询并行运行?
- 查询是否涉及多个分区(表明时间范围较大)?
响应时间
查询事故期间:
- 列出所有活动查询以确定原因
- 立即取消违规查询
- 回顾历史,了解发生了哪些变化
- 应用查询治理策略以防止再次发生
最佳实践
- 设置合适的历史记录大小——默认值 (100) 适用于大多数部署。如果需要更多历史记录进行调试,请增加此值。
- 在仪表板中监控活动查询— 从监控系统轮询活动查询接口,以便及早发现长时间运行的查询。
- 结合查询治理——使用治理策略自动防止失控查询,并使用查询管理实现可见性和手动干预。
- 检查并行查询限制——分区数高的查询跨越的时间范围很大。考虑添加时间限制以提高性能。