PostgreSQL thực tế sắp xếp các bản ghi mới trên đĩa như thế nào (sau một cụm trên khóa chính)?


9

Cần biết làm thế nào hồ sơ đặt hàng PostgreSQL trên đĩa. Trong trường hợp này, tôi muốn tận dụng kết hợp chỉ mục như đã nêu trong các tài liệu , theo tôi hiểu, sử dụng bitmap để có được các hàng khớp và trả về chúng theo vị trí thực tế của chúng. Bảng trong câu hỏi đã được nhóm bởi khóa chính của nó.

Theo tôi hiểu, PostgreSQL không tự động tiếp tục thực hiện phân cụm sau khi phân cụm kết thúc (mặc dù nó nhớ rằng nó được phân cụm theo một chỉ mục nhất định). Bây giờ, vì đây là khóa chính, tôi tự hỏi liệu thứ tự lưu trữ vật lý sẽ theo đó (nếu đúng thì tôi muốn sử dụng lợi thế của chúng tôi cho một truy vấn cụ thể).

Tóm lại, PostgreSQL sắp xếp các bản ghi mới của mình như thế nào, đặc biệt là sau khi phân cụm?

Cảm ơn rất nhiều!

Câu trả lời:


9

Các hàng trong postgresql không có thứ tự cố định. Không chỉ các bản ghi được đặt ở nơi có bản ghi không gian trống cũng có thể di chuyển xung quanh. Điều này là do khi một hàng được cập nhật, một phiên bản mới của hàng được tạo ở một vị trí mới trong khi phiên bản cũ tiếp tục sống ở vị trí cũ cho đến khi nó được gỡ bỏ bằng chân không.

Một hoạt động CLUSTER sắp xếp tất cả các hàng nhưng thực sự không ảnh hưởng đến cách các hàng của postgresql thêm. Vì vậy, dữ liệu sẽ không được sắp xếp. Tuy nhiên, postgresql giữ số liệu thống kê trong đó là mối tương quan cho mỗi cột giữa thứ tự của các hàng trong bảng và thứ tự được sắp xếp của cột đó. Vì vậy, trình hoạch định vẫn có thể tối ưu hóa kế hoạch của nó dựa trên số liệu thống kê cho biết bảng vẫn được sắp xếp chủ yếu ngay cả khi một số hàng đã được thêm sau khi hoạt động cụm (hoặc đã được di chuyển bởi các bản cập nhật).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.