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

Replication lag trong PostgreSQL: đo bằng byte và giây, và khi nó làm hỏng tính đúng đắn

Replication lag là khoảng cách giữa WAL primary đã ghi và replica đã phát lại. Bài này đo thật: tạm dừng replay để lag phình lên 66 MB và replica kẹt ở dữ liệu cũ trong khi primary có 501 nghìn dòng — minh hoạ đọc phải dữ liệu cũ. Cùng cách đo và giảm lag. PostgreSQL 16.

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

TRUNCATE vs DELETE trong PostgreSQL: nhanh hơn 34 lần, và những khác biệt dễ vấp

TRUNCATE vứt cả tệp dữ liệu nên gần như tức thời và trả chỗ ngay; DELETE quét từng dòng, để lại dead tuple và bảng không nhỏ lại. Đo thật: làm rỗng bảng 3 triệu dòng mất 678 ms với DELETE so với 20 ms với TRUNCATE. Cùng khác biệt về giao dịch, sequence và trigger. PostgreSQL 16.

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

Circuit breaker trong Go: tự ngắt lời gọi tới service đang chết, tránh sập dây chuyền

Circuit breaker theo dõi lỗi và tự ngắt lời gọi tới service đang hỏng để không dồn tải. Đo thật trong Go 1.23: ba trạng thái Closed/Open/HalfOpen chuyển đúng, và khi breaker mở nó chặn nhanh trong 107 nano giây thay vì chờ 55ms timeout của service chết.

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

Bảng PostgreSQL ngày càng chậm: phân biệt bloat với thiếu index, chữa đúng bệnh

Một bảng chậm dần theo thời gian có hai nguyên nhân rất khác nhau: bloat (phình do dead tuple) hay thiếu index. Bài này đo thật một bảng phình từ 21 lên 176 MB do UPDATE, cách phân biệt bằng dead tuple và kế hoạch, rồi chữa bằng VACUUM đúng loại. PostgreSQL 16.

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

False sharing trong Go: hai biến không liên quan mà làm chậm nhau 30 lần

Tám goroutine tăng tám counter riêng, không chia sẻ dữ liệu — nhưng chậm 30 lần vì chúng nằm chung một cache line. Đo thật: 830 ms so với 27.5 ms sau khi chèn đệm để mỗi counter chiếm một cache line 64 byte. Cơ chế cache coherency và khi nào cần thêm padding. Go 1.23.

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

Event sourcing trong Go: lưu chuỗi sự kiện thay vì trạng thái, và snapshot cứu tốc độ

Event sourcing lưu chuỗi sự kiện bất biến thay vì trạng thái hiện tại; trạng thái được dựng lại bằng replay. Đo thật trong Go 1.23: dựng lại số dư tài khoản từ chuỗi sự kiện, truy vết lịch sử tại mọi thời điểm, và snapshot làm việc dựng lại nhanh hơn replay đầy đủ khoảng 1443 lần.