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.

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 5 phút

Read replica trong PostgreSQL: phân tải đọc để tăng thông lượng gấp nhiều lần

Đưa truy vấn đọc sang replica giải phóng primary và cộng thêm năng lực đọc theo chiều ngang. Đo thật trên hai node: đọc tách ra hai nơi cho tổng 76 nghìn tps, gấp 2,6 lần một node. Cùng cách định tuyến và cạm bẫy đọc phải dữ liệu cũ. PostgreSQL 16.

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

Logical replication trong PostgreSQL: nhân bản theo bảng, không phải cả cụm

Logical replication dùng publisher/subscriber để nhân bản chọn lọc từng bảng, cho subscriber ghi được và chạy khác phiên bản. Bài này dựng thật lab sang sub_db: publish 2 trong 3 bảng, đo copy ban đầu, INSERT UPDATE DELETE nhân bản, và bảng không publish thì không sang. PostgreSQL 16.

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

MessagePack: JSON nhị phân — nhưng đo thật cho thấy nó không nhỏ như bạn tưởng

MessagePack được quảng cáo là JSON nhị phân gọn hơn. Đúng, nhưng đo thật cho con số khiêm tốn hơn kỳ vọng: cùng một đơn hàng, MessagePack mặc định chỉ nhỏ hơn JSON 1,08 lần, bật compact ints được 1,25 lần — còn xa Protobuf (~2 lần). Lý do lộ ra khi nhìn byte: MessagePack vẫn lưu tên field trong map. Điểm mạnh thật của nó là giải mã nhanh ~2,4 lần JSON và đổi đúng một dòng code.