PG常用的幾個查詢(1)

select version();  ---查看pg版本
SELECT current_database(); --查看當前數據庫
select current_user;   --查看當前用戶
psql -c "select version()"   ----執行單條sql命令
psql -f xxxx.sql   -----可以把多條命令寫入文件,用-f執行
SELECT pg_database_size(current_database());  查看當前庫大小
SELECT sum(pg_database_size(datname)) from pg_database;  查詢所有庫大小之和
select pg_relation_size('accounts');   ---查詢表大小
select pg_total_relation_size('accounts');   ---查詢包含表和表索引其他總大小
select pg_tablespace_size('tbs_index')/1024/1024 as "SIZE M";    查看錶空間大小

查看TOP10大表:
SELECT table_name
,pg_relation_size(table_name) as size
FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema',
'pg_catalog')
ORDER BY size DESC
LIMIT 10;

快速評估表的行數:(一般都是大表,如果用count比較耗時間)
SELECT (CASE WHEN reltuples > 0 THEN
pg_relation_size('mytable')/(8192*relpages/reltuples)
ELSE 0
END)::bigint AS estimated_row_count
FROM pg_class
WHERE oid = 'mytable'::regclass;

查詢等待會話
SELECT
w.current_query as waiting_query,
w.procpid as w_pid,
w.usename as w_user,
l.current_query as locking_query,
l.procpid as l_pid,
l.usename as l_user,
t.schemaname || '.' || t.relname as tablename
from pg_stat_activity w
join pg_locks l1 on w.procpid = l1.pid and not l1.granted
join pg_locks l2 on l1.relation = l2.relation and l2.granted
join pg_stat_activity l on l2.pid = l.procpid
join pg_stat_user_tables t on l1.relation = t.relid
where w.waiting;

SELECT date_trunc('second',
current_timestamp - pg_postmaster_start_time()) as uptime; ----數據庫開啓多久

SELECT pg_postmaster_start_time();     --------什麼時候開啓的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章