-
查看运行时间长的sql
select
pid,datname,usename,client_addr,query_start,now()-query_start
as
time_run, query
from
pg_stat_activity
where
state=
'active'
order
by
time_run
desc
limit 20;
-
查看指定表空间下的表和索引
SELECT
c.relname, t.spcname
FROM
pg_class c
left
JOIN
pg_tablespace t
ON
c.reltablespace = t.oid
WHERE
t.spcname =
'data1tbs'
;
默认表空间的话where判断 c.reltablespace=0 或 t.spcname is null
-
查看指定pid需要的锁状态
select
pc.relname,pl.*
from
pg_locks pl
left
join
pg_class pc
on
pc.relfilenode=pl.relation
where
pl.pid=13912
-
查看未使用索引
select
schemaname,relname,indexrelname,idx_scan
from
pg_stat_user_indexes
where
idx_scan=0
and
schemaname=
'public'
and
indexrelname
not
like
'%_pkey'
-
查看指定表的索引
select
schemaname,relname,indexrelname,idx_scan
from
pg_stat_user_indexes
where
schemaname=
'public'
and
relname=
'visited_article'
-
某个pid在等待的锁的持有者
select
pl1.*,pl2.pid,pa.usename,pa.query
from
pg_locks pl1
left
join
pg_locks pl2
on
pl1.transactionid=pl2.transactionid
and
pl2.granted
left
join
pg_stat_activity pa
on
pl2.pid=pa.pid
where
pl1.pid=21641
and
not
pl1.granted
-
查看所有锁的状态
select
pg_stat_activity.datname,pg_class.relname,pg_locks.transactionid, pg_locks.mode, pg_locks.granted,
pg_stat_activity.usename,substr(pg_stat_activity.query,1,30), pg_stat_activity.query_start,
age(now(),pg_stat_activity.query_start)
as
"age"
, pg_stat_activity.pid
from
pg_stat_activity,pg_locks
left
outer
join
pg_class
on
(pg_locks.relation = pg_class.oid)
where
pg_locks.pid=pg_stat_activity.pid
order
by
query_start limit 10
--查看DB大小 select pg_size_pretty(pg_database_size('ve'));
--查看表大小(不含索引等信息) select pg_relation_size('user'); select pg_size_pretty(pg_relation_size('use'))
--查看每个DB的使用情况(读,写,缓存,更新,事务等) select * from pg_stat_database --查看索引的使用情况 select * from pg_stat_user_indexes; --查看表所对应的数据文件路径与大小 SELECT pg_relation_filepath(oid), relpages FROM pg_class WHERE relname = 'empsalary';
--查看表空间大小 select pg_tablespace_size('pg_default');