Memory capacity of 8388608 bytes for 'range_optimizer_max_mem_size' exceeded. Range optimization was not done for this query.
사내 DBA 분이 튜닝해주신 쿼리가 어떤 때에는 속도가 엄청 느렸습니다.
Mybatis에서 동적으로 In 절을 만들고 있었는데 In 절에 데이터가 많아지는 경우의 문제였습니다.
range_optimizer_max_mem_size 의 값을 확인인하여 값을 변경합니다.
range_optimizer_max_mem_size=0 으로 설정하거나 늘릴것을 검토한다. dynamic parameter이며 0으로 설정 시 unlimit을 의미
> SHOW VARIABLES LIKE '%mem%';
> set session range_optimizer_max_mem_size=nnn;
https://jojoldu.tistory.com/565
MySQL IN절을 통한 성능 개선 방법
잘 사용되진 않는 범위 조건 중에 IN 이 있습니다. 일반적으로 BETWEEN , LIKE , <> 에 비해서는 하나씩 모든 Key를 입력해야 되기 때문에 애플리케이션에서 작업양이 추가되어 선호되진 않는데요. 이 I
jojoldu.tistory.com
https://pjh3749.tistory.com/288
MySQL eq_range_index_dive_limit 를 활용한 쿼리 수행시간 개선 및 실무에서 발생할 수 있는 연관된 문제
배경 의도치 않게 쿼리 수행시간이 증가하거나 이슈가 발생하는 부분 중 하나인 쉽게 발생하지만 원인파악이 쉽지 않은 부분에 대한 내용입니다. IN절로 인한 쿼리 수행시간이 증가하는 것에 따
pjh3749.tistory.com
'오류관리' 카테고리의 다른 글
No serializer found for class ... (0) | 2021.12.29 |
---|---|
java.util.ConcurrentModificationException (0) | 2021.08.06 |
[오류관리] MyBatisSystemException Could not set parameters for mapping (0) | 2021.06.28 |
[오류관리] IntelliJ에서 Spring Boot 인식 못할 때 (0) | 2021.06.21 |
Variable used in lambda expression should be final or effectively final (0) | 2021.06.09 |