Bản phát hành mới nhất và tuyệt vời nhất của PostgreSQL, v11, sẽ ra mắt vào tuần này! Dưới đây là cái nhìn nhanh về các tính năng mới trong phiên bản này.
Cải tiến phân vùng
Bộ cải tiến lớn nhất là hỗ trợ phân vùng. Postgres 11 hỗ trợ:
- cập nhật các hàng có thể di chuyển chúng qua các phân vùng
- phân vùng mặc định
- tạo chỉ mục tự động
- các ràng buộc khóa ngoại được hỗ trợ trên các bảng được phân vùng
- chỉ mục duy nhất
- tổng hợp đẩy xuống các phân vùng
- phân chia theo hàm băm
- phân vùng con trên máy chủ từ xa (postgres_fdw) có thể được cập nhật
- INSERT..ON CONFLICT được hỗ trợ trên các bảng được phân vùng
- kế hoạch truy vấn hiệu quả hơn và thực thi truy vấn nhanh hơn
Đọc thêm về những cải tiến này tại đây.
Song song hơn
Có một loạt các cải tiến liên quan đến chủ nghĩa song song gia tăng. Tham gia, liên kết, tạo bảng và chế độ xem với "CREATE..AS SELECT", tạo chỉ mục btree và nhiều lợi ích hơn từ những thay đổi này.
Đây là bài viết về các cải tiến hiệu suất tạo chỉ mục trong Postgres 11.
Truy vấn tuân thủ JIT
Mặc dù bị tắt theo mặc định trong 11, việc biên dịch truy vấn JIT dựa trên LLVM đã được tích hợp sẵn trong Postgres. Máy chủ hiện có thể chọn biên dịch các truy vấn nhất định (những truy vấn có ước tính thực thi cao hơn ngưỡng) bằng cách sử dụng LLVM, dẫn đến truy vấn nhanh hơn. Việc biên dịch này là tự động và minh bạch đối với ứng dụng.
Đây là một số con số.
Bao gồm các chỉ mục
Bao gồm các chỉ mục, có sẵn trong các RDBMS khác nhưng không phải PostgreSQL, đã được thêm vào. Với điều này, có thể có một chỉ mục như thế này (cú pháp mới):
CREATE INDEX empid_idx ON employees(empid) INCLUDE (empname);
Chỉ mục như vậy bao gồm các thuộc tính bổ sung (ở đây là “empname”) trong chính chỉ mục và giúp nó có thể đáp ứng các truy vấn như:
SELECT empname FROM employees WHERE empid BETWEEN 1000 and 2000;
hoàn toàn sử dụng quét chỉ lập chỉ mục và hoàn toàn không chạm vào heap.
Đọc thêm về bao gồm các chỉ mục tại đây.
Các thủ tục được lưu trữ
Các thủ tục được lưu trữ là một ví dụ khác của PostgreSQL chơi bắt kịp các RDBMS khác. Tất nhiên, chúng tương tự như các hàm được lưu trữ mà PostgreSQL đã hỗ trợ từ lâu, nhưng điều quan trọng nhất có thể là chỉ sử dụng kiểm soát giao dịch thủ tục. Bạn có thể cam kết và khôi phục các giao dịch từ các quy trình phù hợp.
Hãy xem tài liệu TẠO QUY TRÌNH.
Thêm cột vào bảng
Thay đổi bảng để thêm một cột NOT NULL mới với giá trị DEFAULT là một vấn đề khó khăn trong PostgreSQL, vì điều này khiến máy chủ ghi lại toàn bộ bảng. Với v11, giờ đây có thể có các câu lệnh DDL như sau:
ALTER TABLE users ADD COLUMN foo_factor integer NOT NULL DEFAULT 42;
thực hiện trong thời gian không đổi. Các hàng không được chạm vào khi quá trình này được thực thi và được cập nhật một cách “lười biếng”.
Đọc thêm về tính năng này tại đây.
Hàm SHA
Và cuối cùng, những người trong số các bạn chỉ sử dụng pgcrypto cho các hàm SHA giờ có thể chuyển sang sử dụng các hàm được tích hợp sẵn trong PostgreSQL 11:
bench=# \df pg_catalog.sha*
List of functions
Schema | Name | Result data type | Argument data types | Type
------------+--------+------------------+---------------------+------
pg_catalog | sha224 | bytea | bytea | func
pg_catalog | sha256 | bytea | bytea | func
pg_catalog | sha384 | bytea | bytea | func
pg_catalog | sha512 | bytea | bytea | func
(4 rows)
bench=# SELECT sha256('hello');
sha256
--------------------------------------------------------------------
\x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
(1 row)