Hôm nay lại gặp vấn đề database của dự án sử dụng PostgreSQL phình to bất thường. Vì vậy dựa trên kinh nghiệm xử lý vấn đề này trên MySQL mình đã tìm kiếm câu lệnh để lấy kích thước, size của các bảng trong PostgreSQL Database để thu hẹp phạm vi điều tra vấn đề.
Lấy kích thước / size của Database trên PostgreSQL
Để lấy kích thước của 1 database chúng ta sử dụng câu lệnh sau:
SELECT pg_size_pretty( pg_database_size('<database_name>') );
Kết quả:
Để lấy toàn bộ kích thước của tất cả các database và sắp xếp chúng theo kích thước giảm dần:
SELECT pd.datname AS db_name, pg_size_pretty ( pg_database_size ( pd.datname ) ) AS db_size FROM pg_database pd ORDER BY pg_database_size ( pd.datname ) DESC;
Kết quả:
Chú ý là kích thước trả vể của PostgreSQL sẽ là đơn vị bytes. Vì vậy chúng ta sử dụng hàm pg_size_pretty để convert về kB, MB, GB tương ứng.
Ngoài ra chúng ta PostgreSQL còn có thể sử dụng command sau ở chế độ console.
\l+ Hoặc \l+ <database_name>
Kết quả:
Lấy kích thước / size của các bảng trong 1 PostgreSQL Database
Để lấy kích thước của tất cả các bảng và sắp xếp chung theo thứ tự giảm dần, các bạn tham khảo câu SQL sau đây
Chỉ lấy ở schema public
SELECT TABLE_NAME, pg_size_pretty ( pg_total_relation_size ( quote_ident( TABLE_NAME ) ) ), pg_total_relation_size ( quote_ident( TABLE_NAME ) ) FROM information_schema.tables WHERE table_schema = 'public' ORDER BY 3 DESC;
Kết quả:
Lấy hết kích thước của các bảng ở tất cả các schema.
SELECT table_schema, TABLE_NAME, pg_size_pretty ( pg_relation_size ( '"' || table_schema || '"."' || TABLE_NAME || '"' ) ), pg_relation_size ( '"' || table_schema || '"."' || TABLE_NAME || '"' ) FROM information_schema.tables ORDER BY 4 DESC;
Kết quả:
Nguồn: vinasupport.com