PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana Anda menemukan jumlah baris untuk semua tabel Anda di Postgres

Ada tiga cara untuk mendapatkan jumlah seperti ini, masing-masing dengan pengorbanannya sendiri.

Jika Anda menginginkan penghitungan yang benar, Anda harus menjalankan pernyataan SELECT seperti yang Anda gunakan untuk setiap tabel. Ini karena PostgreSQL menyimpan informasi visibilitas baris di baris itu sendiri, bukan di tempat lain, jadi penghitungan akurat apa pun hanya bisa relatif terhadap beberapa transaksi. Anda mendapatkan hitungan dari apa yang dilihat transaksi itu pada saat dijalankan. Anda dapat mengotomatiskan ini untuk dijalankan pada setiap tabel dalam database, tetapi Anda mungkin tidak memerlukan tingkat akurasi tersebut atau ingin menunggu selama itu.

Pendekatan kedua mencatat bahwa pengumpul statistik melacak secara kasar berapa banyak baris yang "langsung" (tidak dihapus atau usang oleh pembaruan selanjutnya) kapan saja. Nilai ini dapat turun sedikit dalam aktivitas berat, tetapi umumnya merupakan perkiraan yang baik:

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

Itu juga dapat menunjukkan kepada Anda berapa banyak baris yang mati, yang merupakan angka yang menarik untuk dipantau.

Cara ketiga adalah dengan mencatat bahwa perintah sistem ANALYZE, yang dijalankan oleh proses autovacuum secara teratur pada PostgreSQL 8.3 untuk memperbarui statistik tabel, juga menghitung perkiraan baris. Anda dapat mengambil yang seperti ini:

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;

Manakah dari kueri ini yang lebih baik untuk digunakan sulit dikatakan. Biasanya saya membuat keputusan itu berdasarkan apakah ada informasi yang lebih berguna yang juga ingin saya gunakan di dalam pg_class atau di dalam pg_stat_user_tables. Untuk tujuan penghitungan dasar hanya untuk melihat seberapa besar hal-hal secara umum, keduanya harus cukup akurat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ikhtisar Perubahan Indeks di PostgreSQL 11

  2. Tidak ada batasan unik atau pengecualian yang cocok dengan ON CONFLICT

  3. Ketidakcocokan Openshift dan net-ssh? (2.9.3-beta1 vs 2.9.2)

  4. Bagaimana cara melepaskan kemungkinan kunci baris Postgres?

  5. Operasi CRUD Generik 2.0 yang licin