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

Chuẩn hóa vs phi chuẩn hóa trong PostgreSQL: JOIN có thật sự đắt không

Nhiều người phi chuẩn hóa vì sợ JOIN đắt. Đo thật: JOIN tới bảng nhỏ có index gần như miễn phí (0,192 ms so với 0,197 ms không JOIN), trong khi cập nhật dữ liệu sao chép chậm 175 lần và rủi ro lệch. Khi nào chuẩn hóa, khi nào phi chuẩn có lý. PostgreSQL 16.

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

Phát hiện rò rỉ goroutine sản xuất trong Go: số goroutine tăng mãi không giảm

Goroutine kẹt vĩnh viễn (chờ channel không ai gửi) không thoát và GC không dọn được — mỗi request rò một cái, số goroutine tăng mãi tới khi hết RAM. Đo thật trong Go: 1000 request rò 1000 goroutine (NumGoroutine 1→1001 không giảm), và pprof goroutine chỉ đúng chỗ kẹt tại một dòng code.

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

text vs varchar vs char trong PostgreSQL: chọn kiểu chuỗi nào và vì sao

Trong PostgreSQL, text và varchar lưu và chạy y hệt nhau — varchar(n) chỉ thêm một ràng buộc độ dài. Đo thật: char(50) tốn gấp đôi text vì đệm khoảng trắng, và gây bẫy so sánh khi độ dài logic khác byte trên đĩa. Vì sao char cố định nhanh hơn là huyền thoại. PostgreSQL 16.

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

Counting Bloom filter: thêm khả năng xóa cho Bloom, và ba cái giá phải trả

Bloom filter thường không xóa được — tắt bit sẽ phá phần tử khác. Counting Bloom thay mỗi bit bằng một bộ đếm nhỏ để hỗ trợ xóa. Bài này tự cài và đo thật: xóa 'bob' làm nó biến mất mà 'alice' vẫn còn nguyên; nhưng cái giá là tốn 4 lần bộ nhớ, có rủi ro tràn bộ đếm, và xóa phần tử chưa từng thêm có thể sinh báo sót. Cơ chế và khi nào đáng dùng.