Tối ưu hiệu năng trong Spring Boot phần lớn xoay quanh ranh giới database: connection pooling, caching, và diệt vấn đề N+1 query. Đo trước (metrics từ Micrometer + Actuator), rồi tấn công phần tốn kém nhất.
Vấn đề N+1 — sát thủ số một của JPA
Lazy association phát một query cho mỗi parent, rồi thêm một query nữa cho mỗi lần truy cập child:
List<Order> orders = orderRepo.findAll(); // 1 query
(Order o : orders) {
o.getItems().size();
}
