PostgreSQL cũng giới thiệu nhiều tính năng đột phá khác trong các phiên bản 10 đến 11, 12 và 13 khiến nó trở thành đối thủ cạnh tranh thực sự với Oracle, chẳng hạn như cải tiến phân vùng, truy vấn song song và sao chép logic. Trong bài đăng trên blog này, chúng tôi sẽ giới thiệu một số tính năng PostgreSQL mới và đáng chú ý có trong các phiên bản PostgreSQL mới hơn.
Tính năng phân vùng
Phân vùng khai báo
Cho đến phiên bản PostgreSQL 9.4, không có phân vùng thực tế nào trong PostgreSQL. Nó chỉ đạt được thông qua kế thừa bảng, cung cấp các lợi ích về hiệu suất và chức năng rất hạn chế. Phần lớn chức năng được quản lý theo cách thủ công thông qua trình kích hoạt hoặc lệnh SQL. Ví dụ, chúng tôi phải sử dụng trình kích hoạt để điều hướng một hàng trước khi CHÈN vào phân vùng chính xác. Chúng ta phải tạo chỉ mục cho từng phân vùng riêng biệt. PostgreSQL phiên bản 10 đã sinh ra phân vùng khai báo, nhưng chúng tôi vẫn phải tạo các ràng buộc và chỉ mục cho mỗi phân vùng.
PostgreSQL 11 hoàn chỉnh với một bộ tính năng Phân vùng mới rất ấn tượng để vừa giúp cải thiện hiệu suất vừa giúp 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.
Sao chép hợp lý các bảng được phân vùng
Với PostgreSQL 13, họ đã giới thiệu hỗ trợ sao chép các bảng được phân vùng một cách hợp lý. Trước đây, bạn buộc phải sao chép các phân vùng riêng lẻ sang các standby của mình. Tuy nhiên, giờ đây, bạn có thể tự động sao chép tất cả các phân vùng của mình cùng một lúc
Phương pháp phân vùng
Các phương pháp phân vùng hiện được hỗ trợ là phạm vi, danh sách và băm.
Phím &Chỉ mục
Hỗ trợ đầy đủ cho khóa ngoại trên bảng được phân vùng đã được thêm vào trong PostgreSQL 12. PostgreSQL cũng tự hào hỗ trợ khóa chính, chỉ mục và trình kích hoạt trên bảng được phân vùng.
Phân vùng mặc định
PostgreSQL cho phép tạo phân vùng "mặc định" để lưu trữ dữ liệu không khớp với bất kỳ phân vùng nào còn lại. Người dùng Oracle sẽ thích tính năng này vì nó không có sẵn trong Cơ sở dữ liệu Oracle.
Chuyển động của Hàng
CẬP NHẬT các câu lệnh thay đổi cột khóa phân vùng hiện khiến các hàng bị ảnh hưởng được chuyển đến các phân vùng thích hợp.
Cắt tỉa phân vùng
Cải thiện hiệu suất SELECT thông qua các chiến lược loại bỏ phân vùng nâng cao trong quá trình lập kế hoạch và thực thi truy vấn. Một phương pháp mới để thực hiện loại bỏ phân vùng đã được thêm vào. Thuật toán mới này có thể xác định các phân vùng phù hợp bằng cách xem mệnh đề WHERE của truy vấn. Thuật toán trước đó đã lần lượt kiểm tra từng phân vùng để xem liệu nó có thể khớp với mệnh đề WHERE của truy vấn hay không. Đ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 phân vùng tăng lên.
Cắt tỉa phân vùng trong khi thực thi truy vấn
Đối với các câu lệnh đã chuẩn bị, các tham số truy vấn không được biết trước khi thực thi. Công cụ lập kế hoạch truy vấn không thể loại bỏ các phân vùng trong giai đoạn lập kế hoạch vì các tham số không được biết. Vì vậy, trình thực thi thực hiện việc cắt tỉa phân vùng trong quá trình thực thi để chỉ truy cập các phân vùng phù hợp với tham số.
Các tính năng PostgreSQL Enterprise mới và đang phát triển với các bản phát hành gần đâyNhấp vào TweetTính năng lập chỉ mục
Chỉ mục bao gồm
PostgreSQL hiện cho phép bạn thêm các cột không phải khóa trong chỉ mục btree. Vì các truy vấn thường cần truy xuất nhiều cột hơn là chỉ những cột mà chúng tìm kiếm, PostgreSQL cho phép bạn tạo một chỉ mục trong đó một số cột chỉ là “trọng tải” và không phải là một phần của khóa tìm kiếm. Nó giúp thực hiện chỉ quét theo chỉ mục để truy xuất các hàng được yêu cầu.
Lập chỉ mục đồng thời
Khởi động PostgreSQL 12, có thể xây dựng lại chỉ mục bằng REINDEX NGAY LẬP TỨC mà không cần khóa bảng để đọc / ghi, giống như lệnh Oracle REBUILD INDEX.
Tạo Chỉ mục Song song
Với tính năng tạo chỉ mục song song (Được giới thiệu trong PostgreSQL 11, hiện chỉ áp dụng cho các chỉ mục b-tree), các chỉ mục có thể được tạo nhanh hơn lên đến giá trị max_parallel_workers và thiết lập Maint_work_mem đủ lớn để chứa nhiều bản sao dữ liệu. Tạo chỉ mục song song có thể giảm đáng kể thời gian tạo chỉ mục của bạn.
Sao chép dữ liệu trong B-Tree Indexes
Đôi khi sẽ có các mục nhập trùng lặp trong một chỉ mục. Điều này có nghĩa là một nút lá trong chỉ mục B-Tree có ít nhất hai mục nhập chỉ mục trong cùng một chỉ mục chứa cùng một dữ liệu cho tất cả các cột chỉ mục. Với việc bổ sung tính năng khử trùng lặp trong PostgreSQL 13, bạn có thể nhóm các mục nhập chỉ mục B-Tree trùng lặp này và tập hợp chúng trong một mục nhập nhóm. Lợi ích của việc này là tiết kiệm dung lượng và giảm tải trên đĩa và RAM, vì bạn sẽ không phải sao chép dữ liệu cột. Các mục nhập trùng lặp cũng gây ra sự phình to chỉ mục không mong muốn.
Xác thực
SCRAM-SHA-256
Trong PostgreSQL 11 đã hỗ trợ xác thực mật khẩu SCRAM-SHA-256. Phương pháp này ngăn chặn việc dò tìm mật khẩu trên các kết nối không đáng tin cậy và cho phép bạn lưu trữ mật khẩu của mình ở dạng được băm bằng mật mã.
Trong số tất cả các phương pháp xác thực mật khẩu được hỗ trợ hiện tại, đây là phương pháp an toàn nhất.
GSSAPI
GSSAPI cho phép xác thực an toàn cũng như đăng nhập một lần tự động cho các hệ thống hỗ trợ nó. Phương thức xác thực này dựa trên thư viện bảo mật tương thích với GSSAPI. Dữ liệu được gửi qua kết nối cơ sở dữ liệu sẽ không được mã hóa trừ khi SSL được sử dụng; tuy nhiên bản thân xác thực là an toàn. GSSAPI với xác thực Kerberos có thể thực hiện được với PostgreSQL theo tiêu chuẩn ngành. Khi Kerberos được sử dụng, mã chính tiêu chuẩn được sử dụng ở định dạng “tên dịch vụ / tên máy chủ @ cảnh giới”. Bất kỳ phần chính nào có trong keytab được máy chủ sử dụng sẽ được máy chủ PostgreSQL chấp nhận.
LDAP
Hoạt động tương tự như xác thực bằng mật khẩu, phương thức xác thực này sử dụng LDAP làm phương thức xác minh. Nó chỉ được sử dụng để xác thực cặp tên người dùng và mật khẩu, do đó người dùng phải tồn tại trong cơ sở dữ liệu để xác thực hoạt động. Xác thực LDAP hoạt động ở chế độ liên kết đơn giản hoặc chế độ được gọi là tìm kiếm + liên kết. Tìm kiếm + ràng buộc cho phép bạn sử dụng các số nhận dạng khác so với chế độ liên kết đơn giản, chỉ cho phép sử dụng tên riêng, tên miền hoặc email.
Chứng chỉ
Phương thức xác thực chứng chỉ sử dụng chứng chỉ SSL để xác thực. Do đó, nó chỉ khả dụng cho các kết nối SSL. Với xác thực chứng chỉ, không cần mật khẩu. Khách hàng chỉ cần cung cấp một chứng chỉ hợp lệ và đáng tin cậy để có thể xác thực. Tên chung của chứng chỉ sẽ được khớp với tên người dùng cơ sở dữ liệu và nếu tìm thấy khớp, ứng dụng khách sẽ được đăng nhập.
Các tính năng đáng chú ý khác
Máy hút song song
Với việc phát hành PostgreSQL 13, các cải tiến đối với lệnh VACUUM đã được thực hiện. Cải tiến được đề cập là tùy chọn tham số được thêm vào PARALLEL. Với PARALLEL, bạn có thể thực hiện các giai đoạn hút bụi chỉ mục và dọn dẹp chỉ mục của VACUUM. Điều này cho phép bạn hút chân không song song nhiều chỉ mục tương ứng với một bảng.
Truy vấn song song
Hầu hết các truy vấn Báo cáo, thường quét nhiều dữ liệu, bị giảm hiệu suất do cần phải quét hoặc tổng hợp dữ liệu từ nhiều hàng ngay cả khi quét chỉ mục. Các truy vấn này chỉ có thể sử dụng một CPU cho đến phiên bản 9.4 và chạy nối tiếp.
Với truy vấn song song (cung cấp tính năng quét tuần tự song song, liên kết hợp nhất, liên kết băm, tổng hợp và các tính năng kế hoạch truy vấn song song khác), các truy vấn này có thể tận dụng lợi thế của nhiều nhân viên và hiệu suất có thể cải thiện từ 2x lên 10x theo tài liệu.
Hãy xem bài đăng này để biết khi nào sử dụng truy vấn song song.
Bản sao lôgic nguyên bản
PostgreSQL đã giới thiệu tính năng sao chép lôgic nguyên bản trong phiên bản 10 để cung cấp tùy chọn sao chép linh hoạt hơn, không giống như sao chép trực tuyến và giống như Oracle Streams, để sao chép các bảng, cột hoặc hàng cụ thể. Điều này có thể được sử dụng để tách giữa nhiều cơ sở dữ liệu hoặc hợp nhất từ nhiều cơ sở dữ liệu. Và cũng có thể sao chép giữa các phiên bản chính khác nhau của PostgreSQL.
Quy trình được lưu trữ với Giao dịch được nhúng
Tuy nhiên, một bổ sung khác giúp PostgreSQL tương thích để di chuyển từ cơ sở dữ liệu Oracle.
Chúng tôi không có bất kỳ kiểm soát giao dịch nào bên trong chương trình pgsql (khối hoặc chức năng DO) trong phiên bản 9.4 và phải sử dụng một giải pháp thay thế như dblink để bắt đầu và cam kết / khôi phục các giao dịch .
Với các thủ tục được lưu trữ, ra mắt trong phiên bản 11, giờ đây chúng ta có thể triển khai kiểm soát giao dịch trong bất kỳ cấu trúc pgsql nào như vòng lặp while, vòng lặp for hoặc câu lệnh if else. Mặc dù các thủ tục được lưu trữ tương tự như các hàm, chúng phải được gọi bằng lệnh CALL và có thể hoạt động như các chương trình độc lập.
Cột đã Tạo
Giống như cơ sở dữ liệu Oracle, các cột được tạo trong PostgreSQL có thể lưu trữ dữ liệu được tính toán tự động từ các cột khác trong hàng. Điều này tăng tốc các truy vấn bằng cách không phải tính toán giá trị trong quá trình thực thi truy vấn và thay vào đó, giá trị cột đã tạo được tính trên INSERT hoặc UPDATE cho hàng.
Tổng hợp JIT
PostgreSQL 11, 12 và 13 đều hỗ trợ biên dịch Just-in-Time (JIT), được bổ sung trở lại vào năm 2018. Biên dịch JIT là quá trình biến đánh giá chương trình thông dịch thành một chương trình bản địa. Với biên dịch JIT, quá trình này có thể được thực hiện tại thời điểm chạy. Một lợi thế của JIT là khả năng tạo ra các hàm biểu thức cụ thể mà CPU có thể thực thi nguyên bản. Đổi lại, quá trình này sẽ giúp bạn tăng tốc.
Kiểm tra Trang
Tổng kiểm tra trang là một tính năng giúp bạn xác minh tính toàn vẹn của dữ liệu được lưu trữ trên đĩa. Trước đây, bạn chỉ có thể bật tổng kiểm tra trang trong quá trình khởi tạo cụm PostgreSQL. PostgreSQL 12 đã giới thiệu khả năng bật hoặc tắt tổng kiểm tra trang trong một cụm ngoại tuyến thông qua lệnh pg_checksums.
Tóm tắt
Như bạn có thể thấy từ bài viết này, PostgreSQL là một hệ thống cơ sở dữ liệu không ngừng phát triển mang lại nhiều tính năng mạnh mẽ cho bảng. Mỗi phiên bản mới đều bổ sung các tính năng thú vị mới khiến nó trở thành đối thủ cạnh tranh thực sự với các cơ sở dữ liệu khác như Oracle. Các tính năng phân vùng và lập chỉ mục của nó nhận được nhiều bản cập nhật mới bổ sung vào hộp công cụ đã mở rộng của nó.
Nếu bạn đang tìm kiếm giải pháp được quản lý cho cơ sở dữ liệu PostgreSQL của mình, vui lòng xem dịch vụ ScaleGrid cho PostgreSQL của chúng tôi. Chúng tôi cung cấp bản dùng thử miễn phí 30 ngày cho phép bạn sử dụng tất cả các tính năng quản lý của chúng tôi mà không có hạn chế. Giá khởi điểm chỉ 10 đô la / tháng và cho phép bạn truy cập vào giải pháp lưu trữ PostgreSQL cấp doanh nghiệp được quản lý đầy đủ với hỗ trợ 24/7.