PostgreSQL 11: Sự phát triển của phân vùng từ Postgres 9.6 đến Postgres 11

Chúc mọi người một ngày thứ Sáu tuyệt vời! Ngày càng có ít thời gian trước khi khóa học bắt đầu "DBMS quan hệ", vì vậy hôm nay chúng tôi chia sẻ bản dịch của một tài liệu hữu ích khác về chủ đề này.

Trên giai đoạn phát triển PostgreSQL 11 Đã có một số công việc ấn tượng được thực hiện để cải thiện việc phân vùng bảng. Bảng phân vùng - đây là một chức năng đã tồn tại trong PostgreSQL từ khá lâu, nhưng có thể nói, về cơ bản nó không tồn tại cho đến phiên bản 10, khi nó trở thành một chức năng rất hữu ích. Trước đây chúng tôi đã tuyên bố rằng kế thừa bảng là việc triển khai phân vùng của chúng tôi và điều này đúng. Chỉ có phương pháp này buộc bạn phải thực hiện hầu hết công việc một cách thủ công. Ví dụ: nếu bạn muốn chèn các bộ dữ liệu vào các phần trong quá trình INSERT, bạn sẽ phải định cấu hình trình kích hoạt để thực hiện việc này cho mình. Việc phân vùng thông qua tính kế thừa rất chậm và khó phát triển thêm chức năng bổ sung.

Trong PostgreSQL 10, chúng ta đã chứng kiến ​​sự ra đời của “phân vùng khai báo”, một tính năng được thiết kế để giải quyết nhiều vấn đề không thể giải quyết được bằng phương pháp kế thừa cũ. Điều này dẫn đến một công cụ mạnh mẽ hơn nhiều cho phép chúng tôi chia dữ liệu theo chiều ngang!

So sánh tính năng

PostgreSQL 11 giới thiệu một bộ tính năng mới ấn tượng giúp cải thiện hiệu suất và làm cho các bảng được phân vùng trở nên minh bạch hơn đối với các ứng dụng.

PostgreSQL 11: Sự phát triển của phân vùng từ Postgres 9.6 đến Postgres 11
PostgreSQL 11: Sự phát triển của phân vùng từ Postgres 9.6 đến Postgres 11
PostgreSQL 11: Sự phát triển của phân vùng từ Postgres 9.6 đến Postgres 11
1. Sử dụng ngoại lệ giới hạn
2. Chỉ thêm các nút
3. Chỉ dành cho bảng được phân vùng tham chiếu đến bảng không được phân vùng
4. Các chỉ mục phải chứa tất cả các cột khóa của phân vùng
5. Giới hạn phần ở cả hai bên phải phù hợp

Năng suất

Chúng tôi cũng có tin tốt ở đây! Đã thêm phương pháp mới xóa phần. Thuật toán mới này có thể xác định các phần phù hợp bằng cách xem xét điều kiện truy vấn WHERE. Thuật toán trước đó lần lượt kiểm tra từng phần để xác định xem nó có thể đáp ứng điều kiện hay không WHERE. Điều này dẫn đến việc tăng thêm thời gian lập kế hoạch khi số lượng các phần tăng lên.

Trong phiên bản 9.6, với việc phân vùng thông qua kế thừa, việc định tuyến các bộ dữ liệu vào các phân vùng thường được thực hiện bằng cách viết một hàm kích hoạt chứa một loạt câu lệnh IF để chèn bộ dữ liệu vào đúng phân vùng. Các chức năng này có thể được thực thi rất chậm. Với phân vùng khai báo được thêm vào trong phiên bản 10, việc này hoạt động nhanh hơn nhiều.

Sử dụng bảng được phân vùng với 100 phân vùng, chúng ta có thể đánh giá hiệu suất tải 10 triệu hàng vào một bảng có 1 cột BIGINT và 5 cột INT.

PostgreSQL 11: Sự phát triển của phân vùng từ Postgres 9.6 đến Postgres 11

Hiệu suất truy vấn bảng này để tìm một bản ghi được lập chỉ mục và thực thi DML để thao tác với một bản ghi (chỉ sử dụng 1 bộ xử lý):

PostgreSQL 11: Sự phát triển của phân vùng từ Postgres 9.6 đến Postgres 11

Ở đây chúng ta có thể thấy hiệu suất của từng thao tác đã tăng lên đáng kể kể từ PG 9.6. Yêu cầu SELECT trông đẹp hơn nhiều, đặc biệt là những phân vùng có khả năng loại trừ nhiều phân vùng trong quá trình lập kế hoạch truy vấn. Điều này có nghĩa là bộ lập lịch có thể bỏ qua rất nhiều công việc mà lẽ ra nó phải làm trước đó. Ví dụ: đường dẫn không còn được xây dựng cho các phần không cần thiết nữa.

Kết luận

Phân vùng bảng đang bắt đầu trở thành một tính năng rất mạnh mẽ trong PostgreSQL. Nó cho phép bạn nhanh chóng hiển thị dữ liệu trực tuyến và đưa dữ liệu ngoại tuyến mà không cần chờ các hoạt động DML chậm và lớn hoàn tất.. Điều này cũng có nghĩa là dữ liệu liên quan có thể được lưu trữ cùng nhau, nghĩa là dữ liệu bạn cần có thể được truy cập hiệu quả hơn nhiều. Những cải tiến được thực hiện trong phiên bản này sẽ không thể thực hiện được nếu không có các nhà phát triển, người đánh giá và người cam kết làm việc không mệt mỏi với tất cả các tính năng này.
Cảm ơn tất cả họ! PostgreSQL 11 trông thật tuyệt vời!

Đây là một bài viết ngắn nhưng khá thú vị. Chia sẻ ý kiến ​​​​của bạn và đừng quên đăng ký Ngày khai trương, trong đó chương trình khóa học sẽ được phác thảo chi tiết.

Nguồn: www.habr.com

Thêm một lời nhận xét