일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- realclass
- 프로젝트
- 영어원서읽기
- Writing
- 괜찮음
- 링피트
- 월간
- FIT XR
- Daily Challenge
- 30분
- 사이드
- Problem Solving
- 미드시청
- 읽기
- 리얼 클래스
- 파비최
- 스탭퍼
- 3줄정리
- 매일
- 만화도
- leetcode
- English
- 화상영어
- 개발자
- 영어공부
- 뭐든
- 쓰릴오브파이트
- 운동
- 잡생각
- 10분
- Today
- Total
파비의 매일매일 공부기록
iBatis - DB Migration 이후 특정 화면의 조회속도가 너무 차이나요. 본문
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를 실행했을 때와 동일한 시간이 걸렸다.
(자세한 설명은 아래 블로그에 있다.)
간단히 설명하면
#variable#을 사용할 때는
OraclePreparedStatement가 실행되면서
굳이 실행되지 않아야 할 Statement로 인해 실행계획이 틀어지면서 발생한 문제다.
(Maria DB에서는 PreparedStatement가 Oracle에 비해 신속하게 처리되어서 문제가 없었을 꺼라 추정된다.)
이번 건을 Trouble Shooting 하면서
의도치 않게 Oracle DB에 대한 기초 지식(Table Space, Index 등)이 늘어난 거 같아 뿌듯하다.
(물논 머리는 좀 쥐어뜯었지만..)
'Trouble Shooting > From workplace' 카테고리의 다른 글
iBatis - DB Connection Hang이 자꾸 발생해요(defaultStatementTimeout 설정) (2) | 2021.01.13 |
---|---|
Oracle - 데이터가 너무 많아서 조회속도가 느려요. (0) | 2021.01.05 |
Apache Tomcat - 특정 페이지에서 개발과 운영 웹 서버 동작이 달라요. (0) | 2021.01.04 |
Java - 특정 상황에서 프로그램 오류가 발생해요. (2) | 2021.01.01 |
JS - Local 서버랑 개발/운영 서버의 동작이 달라요. (4) | 2020.12.21 |