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