вторник, 5 июля 2011 г.

Postgresql - полезные запросы к схеме

1. Найти таблицы, которые подверглись автовакуум и автоанализ:
select relname,last_vacuum, last_autovacuum, last_analyze, last_autoanalyze from pg_stat_user_tables;

2. Найти размеры баз
SELECT pg_database.datname,pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database;

3. Показать количество активных соединений
select datname, count(*) from pg_stat_activity group by datname;

4. Hit rate
SELECT SUM(pg_stat_get_db_blocks_hit(d.oid)) / SUM(pg_stat_get_db_blocks_fetched(d.oid)) AS hit_rate FROM pg_database d;

5. Найти самую большую таблицу в базе (в страницах, страница = 8Кб):
SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;

Два запроса взяты здесь

Размеры 20-ти самых больших таблиц:

SELECT nspname || '.' || relname AS "relation",
  pg_size_pretty(pg_relation_size(C.oid)) AS "size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
  ORDER BY pg_relation_size(C.oid) DESC
  LIMIT 20;
 
Размеры таблиц с индексами
SELECT nspname || '.' || relname AS "relation",
  pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
  ORDER BY pg_total_relation_size(C.oid) DESC
  LIMIT 20; 
 

Комментариев нет: