Q

Quản trị viên

Là một lập trình viên yêu công nghệ, thích viết blog để chia sẻ kiến thức, kinh nghiệm lập trình và những điều thú vị trong thế giới tech.

2312 bài viết · Website
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.

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

Eviction: đo thật một job quét xoá sạch key nóng dưới LRU, còn LFU giữ 199/200

Khi Redis chạm maxmemory, key bị đá ra trước cả khi TTL hết — và chính sách chọn key để đá quyết định cache còn dùng được hay không. Bài này đo thật trên Redis 7: làm nóng 200 key, cho một job quét tuần tự đi qua toàn bộ 2.000 key đúng một lượt, rồi đếm xem key nóng còn lại bao nhiêu. allkeys-lru giữ 18/200, allkeys-random giữ 11/200, allkeys-lfu giữ 199/200. Và đo luôn noeviction: 1.392/1.400 lệnh ghi bị từ chối với lỗi OOM command not allowed, tức bước điền cache của cache-aside hỏng hoàn toàn trong khi đọc vẫn chạy.