1. 마이바티스(Mybatis)를 사용할 때 단일 문자(문자열X) 비교하는 상황에서 발생한 이슈
<choose>
<when test="조건1"> 수행 </when>
<when test="조건2"> 수행 </when>
</choose>
위와 같은 상황에서 입력받은 데이터가 문자 'A'와 같은지를 비교하고 싶다. 근데 난 평소 문자를 비교하던 코드를 복붙 후 <when test="입력받은 데이터 == 'A' "> 처럼 문자열과 문자로 비교하려고 했다. 근데 사실 이래도 상관이 없지 않나? 했지만 바로 타입 에러 발생.
그 뒤 코드를 <when test = ' 입력받은데이터 eq "A"'> 로 수정하여 문자열에 equals를 사용해서 비교하여 해결했다.
2. 로컬에선 멀쩡히 돌아가던 코드가 GitLab CI에서 빌드 에러 발생시킴
주로 Collections들을 Import할 때 발생했던 것 같은데, GitLab CI 할 때 빌드 에러가 발생했다. 아직 자세한 원인은 모르지만, 추측으로는 GitLab 서버에 설치되어 있는 Java 버전이 문제이지 않을까 하는 생각 중.
3. 데이터베이스 인덱스에 따른 속도를 체감하게 되었다.
DB A테이블에 적재되어 있는 데이터 약 36만건을 가공 후 B 테이블로 옮겨야 했다. Select 후 Merge문을 통해 중복을 제거하면서 적재하려고 했는데 10000건씩 잘라서 Batch를 태워도 15분이 걸렸다.
엥? 이럴리가 없는데?
쿼리를 먼저 봤는데 서브쿼리네 뭐네 해도 이정도로 느려질만큼 덕지덕지 발려있던 것도 아닐 뿐더러, 시간을 잡아먹을 로직이 없었다.
그래서 바로 DB 스키마를 확인해보니 인덱스가 빠져있다.
오? 그랬단말이지?
인덱스를 추가하고 나니 15분 -> 약 2분 으로 감소.
인덱스가 성능에 영향을 준다고는 알고 있었는데 이정도일줄은 몰랐지...
이걸 몸소 느끼고 나니 새로웠다. 아 근데 인덱스의 용량은 안봤다. 다시 가서 봐야지
'Develop' 카테고리의 다른 글
뭔가 재미있었던 Spring Security 가지고 놀기 (0) | 2024.04.22 |
---|