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

Giao dịch dài giữ bloat: vì sao một tab quên đóng làm phình cả bảng PostgreSQL

Một giao dịch mở lâu giữ xmin horizon, khiến VACUUM không xóa được dead tuple mới hơn nó — kể cả dead tuple do giao dịch khác tạo. Đo thật: bảng phình từ 3,5 MB lên 14 MB với 300k dead tuple không dọn được trong khi một giao dịch REPEATABLE READ còn mở; đóng nó thì VACUUM dọn sạch ngay. Cách tìm thủ phạm và phòng tránh. PostgreSQL 16.

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.