Cơ sở dữ liệu 29/08/2026 9 phút

300 client dùng chung 17 kết nối — và work_mem của người này lặng lẽ rò sang truy vấn của người khác

Phần trước đo được thông lượng PostgreSQL đạt đỉnh ở đúng số lõi CPU. PgBouncer là câu trả lời khi ứng dụng có nhiều máy chủ — nó nhồi 300 client vào 17 kết nối. Nhưng chế độ transaction có một cái giá không phải hiệu năng: trạng thái phiên của một client rò sang client khác.

Cơ sở dữ liệu 29/08/2026 9 phút

Tỉ lệ trúng đệm 0% mà truy vấn chỉ chậm hơn 30% — vì sao con số ai cũng đuổi theo lại nói dối

'Tỉ lệ trúng đệm phải trên 99%' là một trong những lời khuyên được lặp nhiều nhất về PostgreSQL. Tôi đo xem nó thật sự nói lên điều gì: 19.184 trang bị đánh dấu 'read' chỉ tốn 27,75 ms — 1,4 micro giây mỗi trang, tức tốc độ bộ nhớ, vì có một lớp đệm mà con số đó không nhìn thấy.

Cơ sở dữ liệu 29/08/2026 9 phút

Sắp xếp 3 triệu dòng nhanh nhất ở work_mem 4 MB — cấp 256 MB để chạy hết trong RAM lại chậm hơn 36%

'Truy vấn tràn ra đĩa thì tăng work_mem' là lời khuyên có trong mọi bài tinh chỉnh PostgreSQL. Tôi đo nó trên ba loại thao tác và cả ba đều đi ngược — cấu hình có ghi tệp tạm lại nhanh hơn cấu hình chạy hết trong bộ nhớ, vì nút thắt không nằm ở dung lượng RAM.

Cơ sở dữ liệu 29/08/2026 9 phút

Sửa 4 byte mỗi dòng sinh ra 126 MB WAL — và đặt max_wal_size nhỏ để tiết kiệm đĩa lại ngốn thêm 29%

WAL là nhật ký ghi trước, lý do PostgreSQL sống sót sau mất điện. Tôi đo nó sinh ra bao nhiêu cho mỗi thao tác, và tìm ra một cấu hình phổ biến làm mọi thứ tệ đi theo cách ngược đời: hạ giới hạn để tiết kiệm đĩa lại đóng một vòng lặp khiến tốn nhiều đĩa hơn.

Cơ sở dữ liệu 29/08/2026 8 phút

Thông lượng tụt tám lần trong mười giây — mà con số trung bình vẫn đẹp như không có gì

Phần trước đo WAL sinh ra bao nhiêu; phần này đo chuyện xảy ra khi PostgreSQL đẩy tất cả xuống đĩa. Kết quả bất ngờ: cấu hình có nhiều checkpoint nhất lại mượt nhất — và con số trung bình mà mọi bảng theo dõi hiển thị giấu sạch mười giây người dùng thấy hệ thống đứng.