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

72 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

```postgresql
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;
```
```postgresql
-- 查看表的总大小,包括索引大小
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;
```