13 điểm bởi GN⁺ 2024-09-27 | 1 bình luận | Chia sẻ qua WhatsApp
  • PostgreSQL 17 bao gồm các cải tiến hiệu năng quan trọng, cải thiện quản lý bộ nhớ, tối ưu truy cập lưu trữ, nâng cao khả năng xử lý tải công việc đồng thời cao, tăng tốc độ nạp dữ liệu hàng loạt và xuất dữ liệu, cũng như cải thiện việc thực thi truy vấn chỉ mục

Cải thiện hiệu năng trên toàn hệ thống

  • Cải thiện cấu trúc bộ nhớ nội bộ của quy trình vacuum trong PostgreSQL, vốn rất cần thiết cho hoạt động bình thường, giúp giảm mức sử dụng bộ nhớ tới 20 lần
    • Tăng tốc vacuum và giảm sử dụng tài nguyên dùng chung, nhờ đó có thể dành nhiều tài nguyên hơn cho workload
  • Tiếp tục cải thiện hiệu năng của tầng I/O
    • Cải thiện xử lý Write-Ahead Log(WAL), cho thấy thông lượng ghi tốt hơn tới 2 lần trong các workload đồng thời cao
    • Giao diện streaming I/O mới giúp tăng tốc quét tuần tự (đọc toàn bộ dữ liệu trong bảng) và tăng tốc cập nhật thống kê kế hoạch thực thi của lệnh ANALYZE
  • Mở rộng lợi ích cải thiện hiệu năng sang cả việc thực thi truy vấn
    • Cải thiện hiệu năng của các truy vấn có mệnh đề IN sử dụng chỉ mục B-tree (phương pháp chỉ mục mặc định của PostgreSQL)
    • Hỗ trợ xây dựng song song cho chỉ mục BRIN
  • Bao gồm nhiều cải tiến cho việc lập kế hoạch truy vấn
    • Tối ưu hóa cho ràng buộc NOT NULL
    • Cải thiện xử lý biểu thức bảng chung (truy vấn WITH)
  • Mở rộng hỗ trợ SIMD(Single Instruction/Multiple Data) để tăng tốc tính toán, chẳng hạn như sử dụng AVX-512 cho hàm bit_count

Tiếp tục mở rộng mạnh mẽ trải nghiệm nhà phát triển

  • PostgreSQL là cơ sở dữ liệu quan hệ đầu tiên bổ sung hỗ trợ JSON (2012)
  • Trong PostgreSQL 17, việc triển khai tiêu chuẩn SQL/JSON được mở rộng thêm
    • Có thể chuyển đổi dữ liệu JSON thành bảng PostgreSQL tiêu chuẩn thông qua JSON_TABLE
    • Hỗ trợ các constructor SQL/JSON (JSON, JSON_SCALAR, JSON_SERIALIZE) và các hàm truy vấn (JSON_EXISTS, JSON_QUERY, JSON_VALUE)
    • Bổ sung biểu thức jsonpath tập trung vào việc chuyển đổi dữ liệu JSON sang các kiểu dữ liệu cơ bản của PostgreSQL (số, boolean, chuỗi, ngày/giờ)
  • Bổ sung mệnh đề RETURNING và khả năng cập nhật view cho lệnh MERGE
  • Cải thiện chức năng nạp dữ liệu hàng loạt và xuất dữ liệu
    • Cải thiện hiệu năng tới 2 lần khi xuất các hàng lớn bằng lệnh COPY
    • Cải thiện hiệu năng COPY khi mã hóa nguồn và đích trùng khớp
    • Bổ sung tùy chọn ON_ERROR cho phép tiếp tục nhập ngay cả khi xảy ra lỗi chèn
  • Mở rộng khả năng quản lý dữ liệu phân tán trên các partition và các instance PostgreSQL từ xa
    • Hỗ trợ sử dụng cột ID và ràng buộc loại trừ trên bảng partition
    • Có thể đẩy các truy vấn con EXISTSIN sang máy chủ từ xa bằng postgres_fdw
  • Bao gồm nhà cung cấp đối chiếu dữ liệu tích hợp, độc lập nền tảng và bất biến
    • Cung cấp ngữ nghĩa sắp xếp tương tự đối chiếu C, nhưng dùng mã hóa UTF-8 thay vì SQL_ASCII
    • Khi dùng nhà cung cấp đối chiếu mới này, các truy vấn dựa trên văn bản sẽ trả về cùng một kết quả sắp xếp bất kể PostgreSQL chạy ở đâu

Cải thiện sao chép logic cho tính sẵn sàng cao và nâng cấp phiên bản chính

  • Sao chép logic được dùng để truyền phát dữ liệu theo thời gian thực
  • Ở các phiên bản trước, khi nâng cấp phiên bản chính phải xóa các slot sao chép logic, khiến phải đồng bộ lại dữ liệu cho subscriber sau khi nâng cấp
  • Từ PostgreSQL 17, không còn cần xóa các slot sao chép logic, giúp đơn giản hóa quy trình nâng cấp
  • Bao gồm chức năng kiểm soát chuyển đổi dự phòng cho sao chép logic, cho phép triển khai linh hoạt hơn trong môi trường tính sẵn sàng cao
  • Giới thiệu công cụ dòng lệnh pg_createsubscriber, có thể chuyển một bản sao vật lý thành một bản sao logic mới

Thêm nhiều lựa chọn hơn cho bảo mật và quản trị vận hành

  • PostgreSQL 17 tiếp tục mở rộng cách người dùng quản lý toàn bộ vòng đời của hệ quản trị cơ sở dữ liệu
  • Bổ sung tùy chọn TLS mới là sslnegotiation, cho phép thực hiện trực tiếp bắt tay TLS khi dùng ALPN
  • Bổ sung vai trò định sẵn pg_maintain, cấp quyền thực hiện các tác vụ bảo trì
  • pg_basebackup, tiện ích sao lưu đi kèm PostgreSQL, nay hỗ trợ sao lưu gia tăng và bổ sung tiện ích pg_combinebackup để tái cấu trúc bản sao lưu đầy đủ
  • pg_dump có thêm tùy chọn mới --filter, cho phép chọn các đối tượng sẽ được đưa vào khi tạo tệp dump
  • Cải thiện khả năng giám sát và phân tích
    • EXPLAIN hiển thị thời gian dùng để đọc và ghi các khối I/O cục bộ
    • Bao gồm hai tùy chọn mới là SERIALIZEMEMORY: hữu ích để kiểm tra thời gian dùng cho việc chuyển đổi dữ liệu phục vụ truyền qua mạng và lượng bộ nhớ đã sử dụng
  • Báo cáo tiến trình dọn dẹp chỉ mục
  • Bổ sung system view pg_wait_events; khi kết hợp với pg_stat_activity, nó cung cấp insight về lý do các session đang hoạt động phải chờ

1 bình luận

 
GN⁺ 2024-09-27
Ý kiến trên Hacker News
  • Chúc mừng bản phát hành mới của PostgreSQL 17 và nhắc đến nhiều cải tiến

    • Cải thiện cấu trúc bộ nhớ của tác vụ vacuum, giúp giảm mức sử dụng bộ nhớ tối đa tới 20 lần
    • Tiện ích sao lưu pg_basebackup hỗ trợ sao lưu gia tăng và bổ sung tiện ích pg_combinebackup
    • Cải tiến Foreign Data Wrapper (FDW) cho phép xử lý các truy vấn con EXISTS và IN trên máy chủ từ xa
  • Ý kiến về tính hữu dụng của các tính năng JSON

    • Nhấn mạnh tính hữu ích của các tính năng JSON trong cơ sở dữ liệu quan hệ
    • Đề cập tầm quan trọng của khả năng tạo JSON từ dữ liệu
    • Bày tỏ mong muốn tìm hiểu tính năng JSON_TABLE
  • Chia sẻ trải nghiệm sử dụng tính năng JSON_TABLE

    • Nhấn mạnh sự hữu ích của cách lưu phản hồi JSON vào cột jsonb rồi viết view để phân tích
    • Cảm thấy vui khi thấy cách làm này được xác nhận trong tài liệu tính năng mới của PostgreSQL
  • Nhắc đến các cải thiện hiệu năng và nâng cấp tính năng UX của PostgreSQL 17

    • Hỗ trợ cột ID và ràng buộc loại trừ trên các bảng được phân vùng
    • Bổ sung nhà cung cấp sắp xếp độc lập nền tảng và bất biến, bảo đảm kết quả sắp xếp nhất quán cho các truy vấn dựa trên văn bản
  • Ấn tượng về changelog

    • Thấy tiếc vì PR UUIDv7 không được đưa vào
  • Chia sẻ trải nghiệm chuyển từ Oracle sang MSSQL do vấn đề niềm tin với phần mềm mã nguồn mở

    • Sếp cho rằng "không thể tin tưởng mã nguồn mở cho phần mềm doanh nghiệp"
  • Cảm ơn những cải tiến liên tục của Postgres và hy vọng tiện ích mở rộng Incremental View Maintenance (IVM) sẽ được hỗ trợ chính thức

  • Kỳ vọng về hỗ trợ nâng cấp phiên bản chính của PostgreSQL

  • Mong muốn Postgres đưa vào bảng phiên bản hệ thống

  • Kỳ vọng việc cải thiện tích hợp JSON của Postgres sẽ mở ra một mô hình framework web mới