Cơ sở dữ liệu 22/09/2026 5 phút

Partition-wise join và aggregate: xử lý theo từng cặp vùng, và vì sao chúng tắt mặc định

Khi hai bảng phân vùng giống nhau, PostgreSQL có thể join theo từng cặp vùng thay vì gộp cả bảng — hash table nhỏ hơn, song song hóa được. Đo thật: partition-wise join giảm số batch tràn đĩa từ 32 xuống 4; partition-wise aggregate nhanh hơn ~20%. Nhưng cả hai tắt mặc định. Khi nào bật. PostgreSQL 16.

Cơ sở dữ liệu 22/09/2026 5 phút

Quản lý partition theo thời gian: DROP thay DELETE, DETACH và DEFAULT partition

Phân vùng theo thời gian cần vòng đời: tạo partition tương lai trước, DEFAULT partition bắt dòng ngoài dải, và dọn dữ liệu cũ. Đo thật: DROP partition xóa cả tháng dữ liệu trong 0,069 giây với 0 dead tuple, còn DELETE tương đương để lại 303 nghìn dead tuple cần VACUUM. DETACH tách partition thành bảng độc lập. PostgreSQL 16.

Cơ sở dữ liệu 22/09/2026 5 phút

Index trên bảng phân vùng PostgreSQL: lan xuống, unique phải chứa khóa, và dựng không khóa

Index tạo trên bảng cha phân vùng tự lan xuống mọi partition và partition mới cũng thừa kế. Nhưng unique/primary key BẮT BUỘC chứa khóa phân vùng. Đo thật: unique thiếu khóa phân vùng báo lỗi, duplicate bị chặn ở mức partition, và cách dựng index không khóa dài bằng ON ONLY + CONCURRENTLY + ATTACH. PostgreSQL 16.

Cơ sở dữ liệu 22/09/2026 5 phút

Bảng rất lớn trong PostgreSQL: các đòn bẩy lưu trữ để bảng tỉ dòng vẫn chạy được

Bảng cực lớn cần kết hợp nhiều đòn bẩy lưu trữ. Đo thật: fillfactor=90 cho 43% HOT update (48 MB so với 59 MB), giảm bloat cho bảng ghi nặng; TOAST nén text lặp lại 42 lần và chuyển giá trị khó nén ra ngoài dòng (main chỉ 1 MB, TOAST 195 MB) để heap chính luôn hẹp. Cùng phân vùng và tablespace phân tầng. PostgreSQL 16.

Cơ sở dữ liệu 22/09/2026 5 phút

Sharding PostgreSQL: chia dữ liệu qua nhiều máy khi một máy không đủ

Khi ghi và dữ liệu vượt sức một máy, sharding chia bảng ngang qua nhiều máy chủ. Đo thật với postgres_fdw: bảng phân tán 1 triệu dòng qua 2 shard, truy vấn theo shard key chỉ route tới một máy (Foreign Scan), nhưng truy vấn theo cột khác fan-out tới mọi shard. Ba cách tiếp cận và vì sao chọn shard key là quyết định khó đảo ngược. PostgreSQL 16.

Cơ sở dữ liệu 22/09/2026 5 phút

COPY vs INSERT hàng loạt trong PostgreSQL: nạp dữ liệu nhanh gấp hàng chục lần

Nạp khối lượng lớn bằng INSERT từng dòng tự commit là sai lầm đắt nhất. Đo thật: 20.000 dòng qua INSERT autocommit mất 2,4 giây (fsync mỗi dòng) so với COPY 0,046 giây — nhanh 52 lần. Ở 200k dòng: COPY 29 ms so với INSERT từng dòng 290 ms. Vì sao COPY nhanh và cách dùng đúng cho ETL. PostgreSQL 16.