Bản phát hành PostgreSQL 12

Nhóm PostgreSQL đã công bố phát hành PostgreSQL 12, phiên bản mới nhất của hệ thống quản lý cơ sở dữ liệu quan hệ nguồn mở.
PostgreSQL 12 đã cải thiện đáng kể hiệu suất truy vấn - đặc biệt là khi làm việc với khối lượng dữ liệu lớn và cũng đã tối ưu hóa việc sử dụng dung lượng ổ đĩa nói chung.

Các tính năng mới bao gồm:

  • triển khai ngôn ngữ truy vấn Đường dẫn JSON (phần quan trọng nhất của tiêu chuẩn SQL/JSON);
  • tối ưu hóa việc thực hiện các biểu thức bảng chung (VỚI);
  • hỗ trợ cho các cột được tạo

Cộng đồng cũng tiếp tục nghiên cứu khả năng mở rộng và độ tin cậy của PostgreSQL, phát triển hỗ trợ quốc tế hóa, khả năng xác thực và cung cấp các cách quản trị hệ thống dễ dàng hơn.

Bản phát hành này bao gồm việc triển khai giao diện cho các công cụ lưu trữ có thể cắm, hiện cho phép các nhà phát triển tạo phương pháp lưu trữ dữ liệu của riêng họ.

Cải tiến hiệu suất

PostgreSQL 12 bao gồm các cải tiến đáng kể về hiệu suất và bảo trì cho các hệ thống lập chỉ mục và phân vùng.

Chỉ mục cây B, loại lập chỉ mục tiêu chuẩn trong PostgreSQL, đã được tối ưu hóa trong phiên bản 12 cho khối lượng công việc liên quan đến việc sửa đổi chỉ mục thường xuyên. Việc sử dụng điểm chuẩn TPC-C cho PostgreSQL 12 cho thấy mức sử dụng không gian giảm trung bình 40% và hiệu suất truy vấn tổng thể tăng lên.

Các truy vấn đối với các bảng được phân vùng đã nhận được những cải tiến đáng chú ý, đặc biệt đối với các bảng bao gồm hàng nghìn phân vùng yêu cầu chỉ làm việc với các phần hạn chế của mảng dữ liệu. Hiệu suất thêm dữ liệu vào các bảng được phân vùng bằng INSERT và COPY đã được cải thiện, cũng như khả năng đính kèm phân vùng mới mà không chặn truy vấn.

PostgreSQL 12 đã thực hiện các cải tiến bổ sung về lập chỉ mục ảnh hưởng đến hiệu suất tổng thể, bao gồm:

  • giảm chi phí khi tạo WAL cho các loại chỉ mục GiST, GIN và SP-GiST;
  • khả năng tạo cái gọi là chỉ mục bao phủ (mệnh đề INCLUDE) trên chỉ mục GiST;
  • khả năng thực hiện truy vấn “hàng xóm gần nhất” (tìm kiếm k-NN) bằng cách sử dụng toán tử khoảng cách () và sử dụng chỉ mục SP-GiST;
  • hỗ trợ thu thập số liệu thống kê giá trị phổ biến nhất (MCV) bằng cách sử dụng TẠO THỐNG KÊ, giúp có được kế hoạch truy vấn tốt hơn khi sử dụng các cột có giá trị phân bổ không đều.

Biên dịch JIT bằng LLVM, được giới thiệu trong PostgreSQL 11, hiện được bật theo mặc định. Quá trình biên dịch JIT cải thiện hiệu suất khi làm việc với các biểu thức trong mệnh đề WHERE, danh sách mục tiêu, tổng hợp và một số thao tác nội bộ. Nó khả dụng nếu bạn đã biên dịch PostgreSQL bằng LLVM hoặc đang sử dụng gói PostgreSQL được xây dựng với kích hoạt LLVM.

Cải tiến khả năng ngôn ngữ SQL và khả năng tương thích tiêu chuẩn

PostgreSQL 12 đã giới thiệu khả năng truy vấn các tài liệu JSON bằng cách sử dụng các biểu thức đường dẫn JSON được xác định trong tiêu chuẩn SQL/JSON. Các truy vấn như vậy có thể tận dụng các cơ chế lập chỉ mục hiện có cho các tài liệu được lưu trữ ở định dạng JSONB để truy xuất dữ liệu một cách hiệu quả.

Các biểu thức bảng chung, còn được gọi là truy vấn VỚI, giờ đây có thể được thực thi tự động bằng cách sử dụng tính năng thay thế trong PostgreSQL 12, do đó có thể giúp cải thiện hiệu suất của nhiều truy vấn hiện có. Trong phiên bản mới, phần thay thế của truy vấn VỚI chỉ có thể được thực thi nếu nó không đệ quy, không có tác dụng phụ và chỉ được tham chiếu một lần trong phần tiếp theo của truy vấn.

PostgreSQL 12 giới thiệu hỗ trợ cho "cột được tạo". Được mô tả trong tiêu chuẩn SQL, loại cột này tính toán giá trị dựa trên nội dung của các cột khác trong cùng một bảng. Trong phiên bản này, PostgreSQL hỗ trợ "các cột được tạo được lưu trữ", trong đó giá trị được tính toán được lưu trữ trên đĩa.

Quốc tế hóa

PostgreSQL 12 mở rộng hỗ trợ cho các đối chiếu ICU bằng cách cho phép người dùng xác định "các đối chiếu không xác định", ví dụ: có thể cho phép so sánh không phân biệt chữ hoa chữ thường hoặc không phân biệt dấu trọng âm.

Xác thực

PostgreSQL mở rộng hỗ trợ cho các phương pháp xác thực mạnh mẽ với một số cải tiến nhằm cung cấp thêm chức năng và bảo mật. Bản phát hành này giới thiệu mã hóa phía máy khách và phía máy chủ để xác thực qua giao diện GSSAPI, cũng như khả năng PostgreSQL khám phá các máy chủ LDAP khi PostgreSQL được biên dịch bằng OpenLDAP.

Ngoài ra, PostgreSQL 12 hiện hỗ trợ tùy chọn xác thực đa yếu tố. Máy chủ PostgreSQL hiện có thể yêu cầu khách hàng cung cấp chứng chỉ SSL hợp lệ với tên người dùng tương ứng bằng clientcert=verify-full và kết hợp điều này với yêu cầu phương thức xác thực riêng (ví dụ: scram-sha-256).

quản lý

PostgreSQL 12 đã giới thiệu khả năng thực hiện xây dựng lại chỉ mục không chặn bằng lệnh REINDEX CONCURRENTLY. Điều này cho phép người dùng tránh thời gian ngừng hoạt động của DBMS trong quá trình xây dựng lại chỉ mục kéo dài.

Ngoài ra, trong PostgreSQL 12, bạn có thể bật hoặc tắt tính năng kiểm tra tổng trang trong cụm tắt máy bằng lệnh pg_checksums. Trước đây, tổng kiểm tra trang, một tính năng giúp xác minh tính toàn vẹn của dữ liệu được lưu trữ trên đĩa, chỉ có thể được bật khi cụm PostgreSQL được khởi tạo bằng initdb.

Nguồn: linux.org.ru

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