PostgreSQL

Cách lấy kích thước của database, table, indexes, tablespace trong PostgreSQL

Cách lấy kích thước của database, table, indexes, tablespace trong PostgreSQL
Được viết bởi Minh Hoàng

Series chia sẻ về PostgreSQL – Cơ sở dữ liệu mã nguồn mở tiên tiến nhất thế giới.

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

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');

Cách lấy kích thước của database, table, indexes, tablespace trong PostgreSQL - Hình 1

Để 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'));

Cách lấy kích thước của database, table, indexes, tablespace trong PostgreSQL - Hình 2

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')
);

Cách lấy kích thước của database, table, indexes, tablespace trong PostgreSQL - Hình 3

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;

Cách lấy kích thước của database, table, indexes, tablespace trong PostgreSQL - Hình 4

2. Lấy kích thước của database

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ách lấy kích thước của database, table, indexes, tablespace trong PostgreSQL - Hình 5

Để 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;

Cách lấy kích thước của database, table, indexes, tablespace trong PostgreSQL - Hình 6

3. Lấy kích thước của indexes

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'));

Cách lấy kích thước của database, table, indexes, tablespace trong PostgreSQL - Hình 7

4. Lấy kích thước của tablespace

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')
    );

Cách lấy kích thước của database, table, indexes, tablespace trong PostgreSQL - Hình 8

5. Lấy kích thước của value

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ụ:

Cách lấy kích thước của database, table, indexes, tablespace trong PostgreSQL - Hình 9

Xem thêm: https://www.postgresql.org/docs/current/functions-admin.html.

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

1 bình luận

Translate »