Lập trình Go 22/09/2026 11 phút

singleflight trong Go: gộp 100 lời gọi trùng thành 1 để chống thundering herd

Khi cache miss một key nóng, 100 request cùng lao vào gọi DB. singleflight gộp chúng thành một lời gọi thật, 99 kia chờ và dùng chung kết quả. Đo thật: 100 goroutine cùng key khiến hàm đắt chạy đúng 1 lần thay vì 100. Cơ chế, DoChan, và cạm bẫy lỗi lan. Go 1.23.

Lập trình 22/09/2026 6 phút

VACUUM và autovacuum: cơ chế dọn bản chết tự động giữ PostgreSQL sống sót

Bloat (bài trước) sẽ bóp nghẹt database nếu không được dọn — và VACUUM là công cụ dọn đó. Bài này đo thật trên pg-lab: autovacuum TỰ chạy khi dead tuple vượt ngưỡng, đưa n_dead_tup từ 10.000 về 0 mà không cần một lệnh nào. Xem VACUUM VERBOSE báo cáo dọn 5000 tuple, không gian được tái dùng giữ kích thước ổn định, và vì sao đừng bao giờ tắt autovacuum.