Πώς βρίσκουμε το μέγεθος των πινάκων σε βάση δεδομένων PostgreSQL

Πώς βρίσκουμε το μέγεθος των πινάκων σε βάση δεδομένων PostgreSQL
Πώς βρίσκουμε το μέγεθος των πινάκων σε βάση δεδομένων PostgreSQL

Όταν διαχειριζόμαστε παραγωγικές βάσεις δεδομένων, αργά ή γρήγορα θα έρθει η στιγμή που ο διαθέσιμος χώρος στον δίσκο θα αρχίσει να μειώνεται επικίνδυνα. Το κρίσιμο ερώτημα τότε είναι ποιος πίνακας τρώει τον χώρο. Σε αυτό το άρθρο θα δούμε ένα έτοιμο, SQL query για να εντοπίζετε αμέσως το μέγεθος των πινάκων.

Σε αντίθεση με άλλες βάσεις δεδομένων, η PostgreSQL δεν έχει κάποιο έτοιμο γραφικό για να σο δείξει με μια ματιά το μέγεθος άνα πίνακα αλλά έχει δύο functions τις pg_relation_size και pg_total_relation_size που θα μας βοηθήσουν να βρούμε την πληροφορία.

Το SQL Query

Το παρακάτω script σάς επιστρέφει όλους τους πίνακες της βάσης σας, ταξινομημένους από τον μεγαλύτερο στον μικρότερο:

SELECT 
    schemaname AS schema_name,
    tablename AS table_name,
    pg_size_pretty(pg_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename))) AS table_size,
    pg_size_pretty(pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename))) AS total_size,
    ROUND(pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename)) / 1024.0 / 1024.0 / 1024.0, 4) AS total_size_gb
FROM pg_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename)) DESC;
Πώς βρίσκουμε το μέγεθος των πινάκων σε βάση δεδομένων PostgreSQL

Τι ακριβώς υπολογίζει;

  1. table_size: Δείχνει αποκλειστικά τον χώρο που καταλαμβάνουν τα ίδια τα δεδομένα του πίνακα.
  2. total_size: Δείχνει το πραγματικό μέγεθος του πίνακα στον δίσκο. Αυτό περιλαμβάνει τον πίνακα, όλα τα indexes που είναι συνδεδεμένα σε αυτόν.
  3. total_size_gb: Δίνει το νούμερο σε Gigabytes.

Bonus: Πώς βρίσκουμε το συνολικό μέγεθος της Βάσης Δεδομένων

Αν εκτός από τους πίνακες, θέλουμε να δούμε με μια ματιά πόσο χώρο συνολικά καταλαμβάνει η βάση δεδομένων στην οποία ήμαστε, μπορούμε να τρέξουμαι:

SELECT 
    pg_database.datname AS database_name,
    pg_size_pretty(pg_database_size(pg_database.datname)) AS db_size
FROM pg_database
WHERE pg_database.datname = current_database();
Πώς βρίσκουμε το μέγεθος των πινάκων σε βάση δεδομένων PostgreSQL

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση