Database

Đổi schema PostgreSQL khi hệ thống vẫn đang chạy, và chống ghi đè dữ liệu khi nhiều người cùng sửa.

Database

Migration PostgreSQL — giảm downtime, giảm rủi ro, giữ backward-compatible

Đổi schema PostgreSQL không downtime: expand/contract, index CONCURRENTLY, backfill.

Database

Migration trong CI/CD — lock, rollback, và chỗ để migration ở đâu

Chạy migration trong pipeline: lock, rollback, tách khỏi bước deploy code.

Database

CREATE INDEX CONCURRENTLY — cơ chế, cái giá phải trả

Quét bảng 2 lần, đợi 3 lần, khoá SHARE UPDATE EXCLUSIVE. Fail thì để lại index INVALID. Khi nào KHÔNG dùng.

Database

Optimistic locking — cơ chế, cách implement, bẫy khi dùng updated_at

UPDATE ... WHERE version = ? và affected rows. Vì sao Laravel ghi updated_at chỉ tới giây làm mất update im lặng.