Bài viết này sẽ mô tả cách lấy kích thước của database, table, indexes, tablespace của PostgreSQL bằng các hàm tiện dụng khác nhau.
1. Lấy kích thước của table
Để có được kích thước của một bảng cụ thể, bạn sử dụng hàm pg_relation_size(). Hàm pg_relation_size() trả về kích thước của một bảng cụ thể theo byte.
Ví dụ: bạn có thể lấy kích thước của bảng actor trong cơ sở dữ liệu mẫu dvdrental như sau:
SELECT pg_relation_size('actor');
Để làm cho kết quả dễ hiểu hơn, bạn sử dụng hàm pg_size_pretty(). Hàm pg_size_pretty() lấy kết quả của một hàm khác và định dạng nó bằng cách sử dụng Bytes, KB, MB, GB hoặc TB nếu phù hợp. Ví dụ:
SELECT pg_size_pretty(pg_relation_size('actor'));
Hàm pg_relation_size() chỉ trả về kích thước của bảng, không bao gồm các chỉ mục (indexes) hoặc các đối tượng bổ sung (additional objects).
Vì thế, để có được tổng kích thước của bảng, bạn sử dụng hàm pg_total_relation_size() như sau:
SELECT
pg_size_pretty (
pg_total_relation_size ('actor')
);
Bạn có thể sử dụng hàm pg_total_relation_size() để tìm kích thước của các bảng lớn nhất bao gồm các chỉ mục (indexes).
Ví dụ: truy vấn sau đây trả về 5 bảng lớn nhất trong cơ sở dữ liệu dvdrental:
SELECT relname AS "relation", pg_size_pretty ( pg_total_relation_size (C.oid) ) AS "total_size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN ( 'pg_catalog', 'information_schema' ) AND C.relkind <> 'i' AND nspname !~ '^pg_toast' ORDER BY pg_total_relation_size (C.oid) DESC LIMIT 5;
2. Lấy kích thước của database
Để có được kích thước của toàn bộ cơ sở dữ liệu, bạn sử dụng hàm pg_database_size().
Ví dụ: câu lệnh sau trả về kích thước của cơ sở dữ liệu dvdrental:
SELECT
pg_size_pretty (
pg_database_size ('dvdrental')
);
Để có được kích thước của mỗi cơ sở dữ liệu trong máy chủ cơ sở dữ liệu PostgreSQL hiện tại, bạn sử dụng câu lệnh sau:
SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database;
3. Lấy kích thước của indexes
Để có được tổng kích thước của tất cả các chỉ mục (indexes) được đính kèm vào một bảng, bạn sử dụng hàm pg_indexes_size().
Hàm pg_indexes_size() chấp nhận OID hoặc tên bảng làm đối số và trả về tổng dung lượng đĩa (disk space) được sử dụng bởi tất cả các chỉ mục được đính kèm của bảng đó.
Ví dụ: để có được tổng kích thước của tất cả các chỉ mục được đính kèm vào bảng film, bạn sử dụng câu lệnh sau:
SELECT
pg_size_pretty (pg_indexes_size('film'));
4. Lấy kích thước của tablespace
Để có được kích thước của một tablespace, bạn sử dụng hàm pg_tablespace_size(). Hàm pg_tablespace_size() nhận tên tablespace và trả về kích thước theo byte.
Câu lệnh sau trả về kích thước của tablespace pg_default:
SELECT
pg_size_pretty (
pg_tablespace_size ('pg_default')
);
5. Lấy kích thước của value
Để tìm số byte được sử dụng để lưu trữ một giá trị cụ thể (có thể được nén), bạn sử dụng hàm pg_column_size(), ví dụ:
Xem thêm: https://www.postgresql.org/docs/current/functions-admin.html.
[…] thuộc vào kích thước của cơ sở dữ liệu nguồn, có thể mất một lúc để hoàn thành việc sao […]