-
운영에서 발생한 일 - Optimizer, index공부 이야기/일과 관련된 공부 2021. 8. 9. 19:35
본인이 저지른 실수는 아니지만 간혹 DAO 클래스 내부의 Query를 수정할 때, 예기치 못한 오류들이 운영에서 발생하는 경우가 종종 있다.
개발 DB에 쌓인 데이터는 운영 DB에 쌓인 데이터와 일치하지 않기 때문에 DBMS에 설정된 Optimizer 혹은 index plan이 다르게 설정된 것이 그 원인이었다.
해결 방법은 테이블 구조와 FK 관계를 정확하게 파악하고 올바르게 조인을 사용해야 한다.
이젠 쿼리문, DAO 하나를 수정해도 실제 Plan을 확인하면서 개발과 운영에서 동일한 cost가 소요되는지를 확인해야 한다.
이것이 바로 아무리 테스트 코드가 잘 작성되었고 JPA가 많은 기능을 지원해줘도 정확한 DB 트랜잭션을 확신할 수 없는 이유다.
또한 지나친 튜닝은 오히려 데이터 정합성에 오류가 발생할 수 있다는 것
'공부 이야기 > 일과 관련된 공부' 카테고리의 다른 글
JDBC에 대해 더 깊게 배우기 (기능을 중심으로) (0) 2021.08.11 Spring JDBC (0) 2021.08.11 <SQL Loader> CTL에 대해서 (0) 2021.08.09 동시성에 대하여 (JAVA) (0) 2021.08.08 JAVA equals(), hashcode() 메소드 (0) 2020.12.14