用途:在用户报告集群变慢、节点 CPU/内存偏高、需要定位失控查询或卡住事务时,对 CockroachDB 进行实时性能分诊。仅使用 SQL 接口(SHOW 语句与 crdb_internal 视图),不依赖 DB Console、HTTP 端点或 Prometheus。
主要能力:
- SHOW CLUSTER STATEMENTS 查看当前执行查询;SHOW CLUSTER SESSIONS 查看活跃会话;crdb_internal.cluster_transactions 查看进行中事务。
- 识别长时间运行查询(如超过 5 分钟)、繁忙会话与长事务。
- 按应用、用户、客户端地址下钻过滤;检查事务重试次数判断争用。
- 可选生成并执行取消语句:CANCEL QUERY '<query_id>'; 与 CANCEL SESSION '<session_id>';
必要用法与前提:需要连接任一节点;集群级可见性需 VIEWACTIVITY 或 VIEWACTIVITYREDACTED 权限;取消操作需 CANCELQUERY 或 CANCELSESSION 权限,admin 角色默认具备。可用 SHOW GRANTS ON ROLE <username>; 检查权限。所有诊断查询为只读,取消为可选且有中断用户工作的风险,需确认授权后再执行。建议始终加 LIMIT 并调整时间阈值(如 INTERVAL '5 minutes')。
适用场景:集群实时变慢排查、按应用/用户归因负载、发现高重试事务与资源占用大户。
限制:仅反映当前状态,不能用于历史趋势分析;缺少权限时只能看到自己的会话与查询;VIEWACTIVITYREDACTED 会隐藏其他用户查询中的常量;部分版本或表名错误可能报 relation does not exist。历史分析应改用 profiling-statement-fingerprints 或 profiling-transaction-fingerprints,后台任务监控改用 monitoring-background-jobs。