KingbaseES查找慢查询语句和阻塞会话

在处理数据库性能问题时,识别和分析慢查询及阻塞会话是至关重要的步骤。数据库管理员和开发人员常常需要依赖特定的工具和查询语句来追踪这些性能瓶颈。
当数据库响应变慢或出现处理延迟时,第一步通常是查找那些执行时间过长的查询,这些查询通常被称为“慢查询”。
同时,阻塞会话即那些因等待资源(如锁)而暂停执行的会话也是导致性能问题的常见原因。
通过对这些慢查询和阻塞会话的有效监控和分析,我们不仅可以识别当前的性能瓶颈,还可以采取预防措施,避免未来的性能问题。
接下来,我们将探讨在数据库管理中,如何使用特定的查询语句来检测和分析这些慢查询和阻塞会话。

慢查询和阻塞会话
SELECT syssa.pid, 
sys_blocking_pids(pid) AS blocking_pid, 
TO_CHAR(INTERVAL '1 second' * trunc(EXTRACT(epoch FROM (NOW() - syssa.query_start))), 'HH24:MI:SS') AS query_runtime, 
TO_CHAR(INTERVAL '1 second' * trunc(EXTRACT(epoch FROM (NOW() - syssa.xact_start))), 'HH24:MI:SS') AS xact_runtime, 
syssa.client_port, 
syssa.datname, 
syssa.usename, 
syssa.client_addr, 
syssa.application_name, 
syssa.state, 
syssa.wait_event, 
syssa.wait_event_type, 
syssa.backend_xid, 
syssa.backend_xmin, 
syssa.backend_start, 
syssa.xact_start, 
syssa.state_change, 
syssa.query_start AS query_start, 
trunc(EXTRACT( epoch FROM (NOW() - syssa.xact_start) )) AS xact_stay, 
trunc(EXTRACT( epoch FROM (NOW() - syssa.query_start) )) AS query_stay, 
syssa.QUERY, 
syssa.backend_type, 
'select sys_terminate_backend('||syssa.pid||');' kill1, 
'select sys_cancel_backend('||syssa.pid||');' kill2 
FROM sys_stat_activity AS syssa WHERE 
syssa.state not in ( 'idle' ,'idle in transaction (aborted)' ) and syssa.pid not in (sys_backend_pid()) 
ORDER BY query_stay DESC,xact_stay DESC,pid LIMIT 100;

查询阻塞的进程id
SELECT pid, usename, sys_blocking_pids(pid) AS blocking_pid, query FROM sys_stat_activity WHERE cardinality(sys_blocking_pids(pid)) > 0;
posted @ 2024-03-28 15:32  KINGBASE研究院  阅读(119)  评论(0编辑  收藏  举报