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

- Πώς βρίσκουμε το μέγεθος των πινάκων σε βάση δεδομένων PostgreSQL - 2 Σεπτέμβριος 2026
- Πώς ελέγχουμε τα δικαιώματα, Grants και Default Privileges σε PostgreSQL - 31 Αύγουστος 2026
- Πώς κάνουμε Backup και Restore στη PostgreSQL με τη χρήση του εργαλείου pgBackrest - 28 Αύγουστος 2026
Όταν διαχειριζόμαστε παραγωγικές βάσεις δεδομένων, αργά ή γρήγορα θα έρθει η στιγμή που ο διαθέσιμος χώρος στον δίσκο θα αρχίσει να μειώνεται επικίνδυνα. Το κρίσιμο ερώτημα τότε είναι ποιος πίνακας τρώει τον χώρο. Σε αυτό το άρθρο θα δούμε ένα έτοιμο, 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;

Τι ακριβώς υπολογίζει;
table_size: Δείχνει αποκλειστικά τον χώρο που καταλαμβάνουν τα ίδια τα δεδομένα του πίνακα.total_size: Δείχνει το πραγματικό μέγεθος του πίνακα στον δίσκο. Αυτό περιλαμβάνει τον πίνακα, όλα ταindexesπου είναι συνδεδεμένα σε αυτόν.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();


