json và jsonb trong PostgreSQL: đo kích thước và tốc độ thực tế
Bối cảnh đo đạc
Chris van Eijk đã thực hiện phép đo so sánh kiểu dữ liệu json và jsonb trên PostgreSQL 17 và 18, thử nghiệm trên sáu dạng tài liệu khác nhau. Mục tiêu là làm rõ khi nào jsonb tiết kiệm dung lượng và khi nào lại tốn hơn, cùng với tốc độ đọc và hành vi của chỉ mục GIN.
Kích thước: không phải lúc nào jsonb cũng nhỏ hơn
Kết quả cho thấy jsonb không phải lựa chọn nhỏ gọn mặc định như nhiều người vẫn nghĩ. Tùy dạng tài liệu, jsonb có thể nhỏ hơn tới 23% so với json, nhưng ở trường hợp khác lại lớn hơn tới 41%. Điều này phụ thuộc vào cấu trúc dữ liệu bên trong tài liệu, ví dụ mức độ lặp khóa, kiểu giá trị và cách jsonb lưu trữ nhị phân kèm metadata.
Tốc độ đọc và chỉ mục GIN
Bài viết cũng đề cập đến tốc độ đọc của hai kiểu dữ liệu và vai trò của GIN. Đây là yếu tố quan trọng khi chọn kiểu lưu trữ cho cột JSON trong thực tế, vì dung lượng nhỏ hơn chưa chắc đi kèm truy vấn nhanh hơn.
Điều thay đổi khi lựa chọn
Tóm lại, việc chọn json hay jsonb cần dựa trên đo đạc cụ thể với dạng tài liệu thực tế của ứng dụng, thay vì giả định jsonb luôn tối ưu về dung lượng hay tốc độ.
Nguồn: Planet PostgreSQL
Trích nguồn từ: Planet PostgreSQL
Tags:
Bài viết liên quan
PostgreSQL có thực sự đang thắng? Bằng chứng vượt xa các bảng xếp hạng
Bài viết của Dave Stokes tổng hợp khảo sát người dùng, các thương vụ mua bán công ty PostgreSQL, sản phẩm của đối thủ và lựa chọn của AI agent để lập luận PostgreSQL đang dẫn đầu mảng cơ sở dữ liệu vận hành.
Đọc thêmPostgreSQL, NUMA và điện toán đám mây: những lưu ý khi chạy trong VM và container
Bài cuối trong loạt 4 phần về PostgreSQL và NUMA, tập trung vào thách thức khi chạy PostgreSQL trên máy ảo và container trong môi trường đám mây, kèm các khuyến nghị thực hành.
Đọc thêm
Nâng cấp PostgreSQL tại chỗ không downtime trên cụm phân tán
Ahsan Hadi hướng dẫn nâng cấp tại chỗ từng node PostgreSQL từ 17.10 lên 18.6 trên cụm Spock đa master, giữ ứng dụng luôn có endpoint ghi trong khi mỗi node tạm ngừng vài phút.
Đọc thêm
UUIDv4 và UUIDv7 trên Postgres: cái giá của khóa chính ngẫu nhiên
So sánh ba loại khóa chính trên Postgres 18 cho thấy UUIDv4 chèn chậm hơn khóa có thứ tự và ghi WAL nhiều hơn đáng kể ở mức 100 triệu dòng.
Đọc thêm
Ilya Kosmodemiansky bàn về file cấu hình postgresql.conf "mặc định"
Bài đầu tiên trong loạt bốn phần của Ilya Kosmodemiansky (Data Egret) về cách PostgreSQL đọc cấu hình và nhóm thiết lập kết nối, dựa trên bản PostgreSQL 18.
Đọc thêmChris van Eijk: Lỗi 'server closed the connection unexpectedly' trong PostgreSQL
Phân tích lỗi PostgreSQL đóng kết nối bất ngờ khi có sáu client, cách đọc log máy chủ theo từng nguyên nhân, nơi lưu lý do và các COMMIT bị mất.
Đọc thêmChristophe Pettus: Hiểu đúng về row_security trong PostgreSQL
Chuyên gia tư vấn PostgreSQL Christophe Pettus giải thích rằng đặt row_security = off không tắt bảo mật cấp dòng mà sẽ gây lỗi khi có chính sách được áp dụng.
Đọc thêm
Mô hình Data Warehouse: Sơ đồ ngôi sao
Trình bày về mô hình ngôi sao (star schema) khi xây dựng một dat a warehouse phục vụ mục đích báo cáo và phân tích cho doanh nghiệp.
Đọc thêm
Sự khác nhau giữa hệ thống OLAP và OLTP?
Có 2 loại ứng dụng cơ sở dữ liệu trong việc phát triển ứng dụng mà chúng ta cần biết. Bài viết này sẽ nói cho bạn biết sự giống và khác nhau giữa 2 loại hệ thống này.
Đọc thêm