파비의 매일매일 공부기록

iBatis - DB Migration 이후 특정 화면의 조회속도가 너무 차이나요. 본문

Trouble Shooting/From workplace

iBatis - DB Migration 이후 특정 화면의 조회속도가 너무 차이나요.

fabichoi 2020. 12. 30. 23:30

최근 DB Migration 이후로(Maria DB > Oracle DB)

이전에는 없었던 이슈가 종종 발생한다.

 

꽤나 오래된 이슈 중

특정 화면들에서 개발/운영 서버의 조회시간이

DB Migration 이전보다 많이 걸리는 현상이 자주 발생했었다.

 

처음에는 Oracle DB 쪽 설정이 잘못되거나

Index가 제대로 안 들어가 있거나 Table Space가 문제인지 알았으나

(물론 상기 2가지도 보완을 해야 하는 부분도 존재했다.)

 

자세히 들여다보니

Query Tool(SQL DEVELOPER)에서 SELECT문 자체를 실행했을 때의 조회 시간과

UI에서 조회했을 때의 시간이 달랐다.

 

그래서 Back-end(Java) 단을 확인해봤으나 특별한 이슈는 없어서

XML을 가져와 쓰는 iBatis가 문제일 것이라 추정하고

다른 화면들과 XML이 다른 부분을 비교해봤다.

 

그랬더니 iterate를 사용하는 부분에서

#variable#(바인드 변수) 때문에 발생했던 문제로 판단되어

$variable$(리터럴 변수)로 변경하였더니

UI에서 조회했을 때에도 Query Tool에서 SELECT를 실행했을 때와 동일한 시간이 걸렸다.

(자세한 설명은 아래 블로그에 있다.)

dsmoon.tistory.com/entry/ibatis-%EC%BF%BC%EB%A6%AC-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC-%EB%B0%8F-%EC%A3%BC%EC%9D%98%EC%A0%90-%EB%B3%80%EC%88%98

 

간단히 설명하면

#variable#을 사용할 때는

OraclePreparedStatement가 실행되면서

굳이 실행되지 않아야 할 Statement로 인해 실행계획이 틀어지면서 발생한 문제다.

(Maria DB에서는 PreparedStatement가 Oracle에 비해 신속하게 처리되어서 문제가 없었을 꺼라 추정된다.)

 

이번 건을 Trouble Shooting 하면서

의도치 않게 Oracle DB에 대한 기초 지식(Table Space, Index 등)이 늘어난 거 같아 뿌듯하다.

(물논 머리는 좀 쥐어뜯었지만..)

반응형
Comments