Blog
Trang 2
Index trong PostgreSQL: khi nào nên tạo và khi nào không
B-tree, index trên khoá ngoại, composite index và cái giá của việc lạm dụng index khi ghi dữ liệu.
22/07/2026
Đọc EXPLAIN ANALYZE trong PostgreSQL để tối ưu query
Hiểu Seq Scan vs Index Scan, cost, rows và actual time — công cụ số một để tìm ra vì sao query chậm.
22/07/2026
Chuẩn hoá cơ sở dữ liệu: 1NF, 2NF, 3NF giải thích bằng ví dụ
Ba dạng chuẩn đầu tiên, phụ thuộc hàm và khi nào nên phi chuẩn hoá (denormalize) để đổi lấy hiệu năng.
22/07/2026
Transaction và các mức cô lập (isolation level) trong SQL
ACID, dirty read, non-repeatable read, phantom read và bốn mức isolation — chọn đúng để cân bằng đúng đắn và hiệu năng.
22/07/2026
Flyway migration: quy ước đặt tên và best practice
Versioned vs repeatable migration, quy tắc đặt tên V1__, vì sao không bao giờ sửa migration đã chạy và cách xử lý rollback.
22/07/2026
N+1 query problem trong JPA/Hibernate và cách khắc phục
Vì sao lazy loading sinh ra hàng trăm query ẩn, cách phát hiện và ba cách sửa: JOIN FETCH, entity graph, batch size.
22/07/2026
Spring Boot profile: tách cấu hình dev, staging và prod
application-{profile}.yml, kích hoạt profile, override bằng biến môi trường và cách tránh lộ secret trong code.
22/07/2026
@Transactional trong Spring: những hiểu lầm phổ biến
Vì sao gọi nội bộ không kích hoạt transaction, rollback chỉ với unchecked exception và bẫy readOnly.
22/07/2026
DTO vs Entity trong Spring Boot: vì sao đừng trả Entity ra API
Tách lớp truyền dữ liệu khỏi lớp lưu trữ để tránh lộ dữ liệu, vòng lặp JSON và ràng buộc API vào schema database.
22/07/2026