Database

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

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 MySQL 8.4 — giảm downtime, giảm rủi ro, giữ backward-compatible

Song song bài PostgreSQL: hàng đợi metadata lock, INSTANT/INPLACE/COPY đo thật từng thao tác, gh-ost vs pt-osc dưới tải, replica lag, và giới hạn zero-downtime khi Moodle upgrade (LMS Uni).

Database

PostgreSQL vs MySQL (InnoDB) — khác nhau ở đâu, ảnh hưởng nghiệp vụ ra sao

So theo từng trục: kết nối, lưu trữ, MVCC, isolation/locking, strict mode, collation, DDL, upsert, replication, vận hành. Lab PostgreSQL 18.4 và MySQL 8.4, ma trận quyết định, áp vào LMS Uni và LMS Micro-learning.

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

Dead tuple và index bloat — PostgreSQL chậm dần thế nào, MySQL có bị không

UPDATE ghi bản mới vào mọi index, VACUUM không trả dung lượng, tx dài chặn dọn rác. So với undo + purge của InnoDB, số đo thật PG 18 và MySQL 8.4.

Database

Transaction ID wraparound — PostgreSQL tự chống thế nào, khi nào nó bó tay

Anti-wraparound vacuum chạy kể cả khi autovacuum = off. Nhưng nó freeze 0 dòng nếu xmin horizon bị ghim — demo thật PG 18.4, 5 tầng ngưỡng, runbook lúc DB từ chối ghi.

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.

Database

Deadlock ở PostgreSQL và MySQL — các trường hợp, cách nhận biết, phòng và chữa

14 trường hợp tái hiện thật (PG 18.4, MySQL 8.4): khoá ngược thứ tự, gap lock, FK, unique, thiếu index. Đọc log, 1213 vs 1205, retry của Laravel và bẫy side effect, áp vào Moodle.

Object storage

MinIO — kiến trúc và cơ chế hoạt động

Không có metadata server: hash tên object ra erasure set, xl.meta nằm cạnh dữ liệu. Lab thật 4 ổ và 24 ổ: phá shard, bitrot, mất quorum, heal khi thay ổ. Kèm tình trạng bản community đã archive.

Redis

Redis — những thứ cần biết

Một luồng chạy lệnh, KEYS/DEL big key/Lua làm đứng cả server, eviction, persistence, replication mất write, lock và cluster.

Redis

Forum khoá học: post, reply, like không trùng — PostgreSQL + Redis

PRIMARY KEY giữ luật, Redis SET theo user+khoá học, Lua + Stream gom like cho bài hot. Số đo hot row, 12 bẫy đã test.

Redis

Thiết kế tên key Redis — quy tắc, số đo RAM, Cluster, bẫy của Laravel

Format domain:entity:version:id, băm input tự do, version + TTL, hash tag không gây hot slot. Tên thật Laravel ghi vào Redis và 5 bẫy prefix.