人大金仓数据库慢查询排查

服务器登陆人大金仓

ksql test system

1. 查看该库所有会话(含空闲)

SELECT
  pid,
  datname,
  usename,
  client_addr,
  state,
  query_start,
  query
FROM sys_stat_activity
WHERE datname = 'saas_hsfarm'
ORDER BY query_start DESC;

2. 只看 正在执行(active) 的查询(推荐)

SELECT
  pid,
  datname,
  usename,
  client_addr,
  state,
  current_timestamp - query_start AS runtime,
  query
FROM sys_stat_activity
WHERE datname = 'saas_hsfarm'
  AND state = 'active'  -- 只查运行中
ORDER BY runtime DESC;

pid:进程 ID(杀任务用)
runtime:已运行时间
query:正在执行的 SQL

3. 查看锁等待 / 慢查询

-- 死锁/锁等待
SELECT pid, datname, usename, wait_event, query
FROM sys_stat_activity
WHERE datname = 'saas_hsfarm'
  AND wait_event_type = 'Lock';

-- 运行超过 1 分钟的慢查询
SELECT
  pid,
  current_timestamp - query_start AS runtime,
  query
FROM sys_stat_activity
WHERE datname = 'saas_hsfarm'
  AND state = 'active'
  AND query_start < now() - interval '1 min';

4. 杀掉指定查询任务(2 种方式)

4.1 终止指定 pid(推荐)

-- 先取消查询(温和)
SELECT sys_cancel_backend(12345);  -- 12345 替换为实际pid

-- 强制终止会话(彻底断开)
SELECT sys_terminate_backend(12345);

sys_cancel_backend(pid):只取消当前 SQL,连接保留
sys_terminate_backend(pid):断开连接、回滚事务

4.2 批量终止该库所有活跃查询(慎用)

SELECT sys_terminate_backend(pid)
FROM sys_stat_activity
WHERE datname = 'saas_hsfarm'
  AND state = 'active'
  AND pid <> sys_backend_pid();  -- 排除自己
posted @ 2026-04-15 14:25  村尚chun叔  阅读(111)  评论(0)    收藏  举报