article/postgresql_and_edb/postgresql锁表查询.md
2022-12-08 23:03:14 +08:00

1.6 KiB
Raw Blame History

SELECT locker.pid,
       pc.relname,
       locker.mode,
       locker_act.application_name,
       least(query_start,xact_start) start_time,
       locker_act.state,
       CASE
           WHEN granted='f' THEN
               'wait_lock'
           WHEN granted='t' THEN
               'get_lock'
           END lock_satus,current_timestamp - least(query_start,xact_start) AS runtime,
       locker_act.query
FROM pg_locks locker,pg_stat_activity locker_act, pg_class pc
WHERE locker.pid=locker_act.pid
  AND NOT locker.pid=pg_backend_pid()
  AND application_name<>'pg_statsinfod'
  AND locker.relation = pc.oid
  AND pc.reltype<>0 --and pc.relname='t'
ORDER BY  runtime desc;


SELECT pg_terminate_backend(14448)

SELECT
	w1.pid AS 等待进程,
	w1.MODE AS 等待锁模式,
	w2.usename AS 等待用户,
	w2.query AS 等待会话,
	b1.pid AS 锁的进程,
	b1.MODE 锁的锁模式,
	b2.usename AS 锁的用户,
	b2.query AS 锁的会话,
	b2.application_name 锁的应用,
	b2.client_addr 锁的 IP地址,
	b2.query_start 锁的语句执行时间 
FROM
	pg_locks w1
	JOIN pg_stat_activity w2 ON w1.pid = w2.pid
	JOIN pg_locks b1 ON w1.transactionid = b1.transactionid 
	AND w1.pid != b1.pid
	JOIN pg_stat_activity b2 ON b1.pid = b2.pid 
WHERE
	NOT w1.GRANTED;
-- 查看表的总大小,包括索引大小  
select pg_size_pretty(pg_total_relation_size('test')); 

-- 以KBMBGB的方式来查看表大小
select pg_size_pretty(pg_relation_size('test'));     

-- 查看最大连接数
show max_connections;

-- 查看当前连接数
SELECT COUNT(*) from pg_stat_activity;