Bài viết mới nhất

Tổng 1741 bài
Cơ sở dữ liệu 22/09/2026 4 phút

Multi-row INSERT và batch trong PostgreSQL: kích thước lô tối ưu, lợi ích giảm dần

Gộp nhiều dòng vào một câu INSERT VALUES giảm round-trip mạng và chi phí lặp lại. Đo thật nạp 100k dòng: lô 1 dòng mất 8,49 giây, lô 50 chỉ 0,32 giây (nhanh 26 lần), nhưng từ lô 500 trở lên lợi ích giảm dần rõ rệt (0,16 so với 0,14 giây). Điểm ngọt là 500-1000 dòng mỗi lô. Khi nào dùng thay COPY. 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.

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

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

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

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.