PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да намерите броя на редовете за всичките си таблици в Postgres

Има три начина да получите този вид броене, всеки със свои собствени компромиси.

Ако искате истински брой, трябва да изпълните оператора SELECT като този, който сте използвали срещу всяка таблица. Това е така, защото PostgreSQL запазва информацията за видимостта на реда в самия ред, а не навсякъде другаде, така че всяко точно преброяване може да бъде само относително към някаква транзакция. Получавате преброяване на това, което тази транзакция вижда в момента, когато се изпълнява. Можете да автоматизирате това, за да работи срещу всяка таблица в базата данни, но вероятно нямате нужда от това ниво на точност или искате да чакате толкова дълго.

Вторият подход отбелязва, че събирачът на статистически данни проследява приблизително колко реда са „на живо“ (не са изтрити или остарели от по-късни актуализации) по всяко време. Тази стойност може да се понижи малко при интензивна активност, но като цяло е добра оценка:

SELECT schemaname,relname,n_live_tup 
  FROM pg_stat_user_tables 
  ORDER BY n_live_tup DESC;

Това може също да ви покаже колко реда са мъртви, което само по себе си е интересно число за наблюдение.

Третият начин е да се отбележи, че командата ANALYZE на системата, която се изпълнява от процеса на автоматично вакуумиране редовно от PostgreSQL 8.3 за актуализиране на статистиката на таблицата, също изчислява оценка на ред. Можете да го вземете така:

SELECT 
  nspname AS schemaname,relname,reltuples
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE 
  nspname NOT IN ('pg_catalog', 'information_schema') AND
  relkind='r' 
ORDER BY reltuples DESC;

Трудно е да се каже коя от тези заявки е по-добре да се използва. Обикновено вземам това решение въз основа на това дали има още полезна информация, която също искам да използвам вътре в pg_class или вътре в pg_stat_user_tables. За основни цели на броене, само за да видите колко големи са нещата като цяло, едното и другото трябва да е достатъчно точно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:Как да предавам параметри от командния ред?

  2. Как да вмъкнете в масив в PostgreSQL

  3. PostgreSQL - заявка от bash скрипт като потребител на база данни 'postgres'

  4. Как да ускоря броенето на редове в PostgreSQL таблица?

  5. Регистриране на одит за PostgreSQL