PostgreSQL: Bản đồ không gian tự do (FSM) là gì?

2022-03-17 10:06:28

Trong bài đăng này, chia sẻ một lưu ý nhỏ về một trong những kiến trúc nội bộ của PostgreSQL.

Mỗi Bảng và Chỉ mục có một FSM được sử dụng để theo dõi không gian có sẵn trong mối quan hệ.

Nó lưu trữ tất cả các thông tin liên quan đến dung lượng trống trong một quan hệ chính bên cạnh và quan hệ đó bắt đầu bằng số nút tệp cộng với hậu tố _fsm.

Nếu bạn chưa biết về MVCC (Multitiversion Concurrency Control), vui lòng truy cập bài viết dưới đây.

Kiểm soát đồng thời nhiều phiên bản (MVCC) là gì

Do kiến trúc MVCC, PostgreSQL tạo các bộ giá trị chết trên mỗi bản cập nhật và hành động xóa.

Tại sao VACUUM yêu cầu trong MVCC vì VACUUM loại bỏ các phiên bản hàng chết trong bảng và đánh dấu khoảng trống có sẵn để sử dụng lại trong tương lai.

Quy trình VACUUM cũng cập nhật Bản đồ không gian trống và sử dụng VACUUM FULL, chúng tôi có thể khôi phục những không gian trống đó.

Các trang FSM được tổ chức như một cây.
Các trang FSM cấp dưới cùng lưu trữ không gian trống có sẵn trên mỗi trang, sử dụng một byte để đại diện cho mỗi trang như vậy.
Các cấp trên tổng hợp thông tin từ các cấp dưới.

Chúng tôi cũng có thể kiểm tra các trang không gian trống bằng mô-đun pg_freespace.

Xem thêm:


Chia sẻ: