数据库管理常用查询

你离开我真会死。 提交于 2019-11-29 10:00:17
  1. 查看运行时间长的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;

  2. 查看指定表空间下的表和索引

    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
     

  3. 查看指定pid需要的锁状态

    select pc.relname,pl.* from pg_locks pl left join pg_class pc on pc.relfilenode=pl.relation where pl.pid=13912

  4. 查看未使用索引

    select schemaname,relname,indexrelname,idx_scan from pg_stat_user_indexes where idx_scan=0 and schemaname='public' and indexrelname not like '%_pkey'

  5. 查看指定表的索引

    select schemaname,relname,indexrelname,idx_scan from pg_stat_user_indexes where schemaname='public' and relname='visited_article'

  6. 某个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

  7. 查看所有锁的状态

    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');

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!