Các tính năng mới của bộ lập kế hoạch truy vấn trong PostgreSQL 16
- PostgreSQL 16 mang đến nhiều cải tiến cho bộ lập kế hoạch truy vấn, giúp nhiều truy vấn SQL chạy nhanh hơn so với các phiên bản trước.
- Có thể xem các cải tiến của bộ lập kế hoạch này trong ghi chú phát hành PG16, nhưng vì mỗi bản phát hành PostgreSQL có rất nhiều thay đổi nên khó có thể cung cấp giải thích chi tiết cho từng thay đổi.
- Bài viết blog này cung cấp phân tích chuyên sâu về 10 cải tiến trong bộ lập kế hoạch truy vấn của PostgreSQL 16, kèm theo so sánh đầu ra của bộ lập kế hoạch giữa PG15 và PG16 và các ví dụ về những gì đã thay đổi.
10 cải tiến của bộ lập kế hoạch truy vấn trong PostgreSQL 16
- Sắp xếp tăng dần: Được giới thiệu lần đầu trong PostgreSQL 13, sắp xếp tăng dần tận dụng trường hợp một phần tập kết quả đã được sắp xếp theo một hoặc nhiều cột đứng trước, và chỉ thực hiện sắp xếp cho các cột còn lại.
- Tổng hợp sử dụng dữ liệu đã sắp xếp: Bộ lập kế hoạch truy vấn của PostgreSQL 16 giờ đây cố gắng tạo kế hoạch cung cấp các hàng cho nút tổng hợp theo thứ tự đã được sắp xếp.
- Memoization: Nút kế hoạch memoization, lần đầu được giới thiệu trong PostgreSQL 14, hoạt động như một lớp bộ nhớ đệm để tránh tra cứu các giá trị trùng lặp.
- Anti join: PostgreSQL 16 cho phép băm bảng nhỏ hơn khi thực hiện anti join.
- Parallel hash join: PostgreSQL 16 hỗ trợ parallel hash join cho các kiểu FULL và RIGHT join.
- Tối ưu hóa hàm cửa sổ: PostgreSQL 16 cho phép sử dụng các hàm cửa sổ nhanh hơn ở chế độ ROWS so với chế độ RANGE.
- Tối ưu hóa hàm cửa sổ luôn tăng: PostgreSQL 16 mở rộng tối ưu hóa cho các hàm cửa sổ như ntile(), cume_dist(), percent_rank().
- Loại bỏ join trên bảng phân vùng: PostgreSQL 16 cho phép tối ưu hóa loại bỏ LEFT JOIN trên bảng phân vùng.
- Sử dụng Limit cho truy vấn DISTINCT: Bộ lập kế hoạch truy vấn của PostgreSQL 16 không bao gồm nút kế hoạch để khử trùng lặp trong kết quả khi có thể phát hiện rằng tất cả các hàng đều chứa cùng một giá trị.
- Nới lỏng quy tắc cho Merge Join: Bộ lập kế hoạch truy vấn của PostgreSQL 16 khi xem xét Merge Join sẽ kiểm tra xem ít nhất một cột đứng trước đã được sắp xếp đúng hay chưa, thay vì yêu cầu thứ tự hàng phải khớp hoàn toàn chính xác.
Ý kiến của GN⁺
- Các cải tiến của bộ lập kế hoạch truy vấn trong PostgreSQL 16 đóng vai trò quan trọng trong việc nâng cao hiệu năng cơ sở dữ liệu. Đặc biệt, các tính năng như sắp xếp tăng dần và memoization giúp thực thi các truy vấn phức tạp hiệu quả hơn.
- Những cải tiến này sẽ rất hữu ích với các nhà phát triển và quản trị viên cơ sở dữ liệu sử dụng PostgreSQL, đặc biệt trong các hệ thống xử lý dữ liệu quy mô lớn, nơi có thể cảm nhận rõ mức cải thiện hiệu năng.
- Nỗ lực đổi mới và cải tiến liên tục của cộng đồng PostgreSQL đang thúc đẩy sự phát triển của công nghệ cơ sở dữ liệu mã nguồn mở, từ đó mang lại các giải pháp quản lý dữ liệu tốt hơn cho người dùng và doanh nghiệp.
1 bình luận
Ý kiến Hacker News
explain.dalibo.comvàwww.pgexplain.devlàm công cụ trực quan hóa truy vấn. Cả hai công cụ đều cho ra kết quả đầu ra tương tự nhau.IS NOT DISTINCT FROM.