개요
- thread_cache_size의 의미 및 튜닝방법 확인
cd /etc/mysql/mysql.conf.d #ubuntu 기준
vim mysqld.cnf
thread_cache_size가 -1 로 설정된 이유?
- thread_cache_size를 -1로 설정하면 MySQL에서는 자동으로 thread_cache_size를 결정하는 것으로 설정
- 이는 현재의 작업 부하, 시스템 자원 상태를 고려하여 최적의 thread_cache_size를 결정하려 할 때 사용
- 단, 특정 상황이나 세부 조정이 필요한 경우에는 조절 필요
show global status like "%threads_%";
1. Threads_cache_size 변경
- Thread_created 변수가 증가하는 경우 Thread_cache_size값을 증가 필요
- connection을 미리 만들어 Client가 접속할 시 Thread를 만들지 않고 cache의 Thread를 사용자에게 할당
- cache의 Thread를 사용하게 되면서 만드는 부하를 감소시키는 장점 보유
2. cache miss ratio
- 캐시 메모리의 성능을 평가하고 최적화하기 위한 지표로 cache에서 요청한 데이터가 cache에 존재하지 않고 주 메모리나 다른 하위 수준의 cache로부터 가져와야 할 때 발생하는 빈도
- cache miss ratio는 Threads_created / Connections * 100으로 계산하며 이 때 cache miss ratio가 낮은것이 좋음
- 이 비율을 낮추려면 thread_cache_size를 늘려야 하지만 이 값을 늘리면 시스템에 메모리를 많이 사용
- 반대로 너무 낮으면 thread를 계속 생성하여 시스템 추가 부하 발생
- 일반적으로 Threads_connected Paek-time시 보다 약간 낮은 수치로 설정하는것이 좋음
- Threads_connected의 수 100 ~ 120 : 캐시 크기 : 약 20
- Threads_connected의 수 500 ~ 700 : 캐시 크기 : 약 200
show variables like '%thread_cache_size%';
show status like 'connections';
show status like '%threads_%';
--> 이 때 cache_miss_ratio는 약 11.1%
show variables like '%thread_cache_size%';
show status like 'connections';
show status like '%threads_%';
--> 이 때 cache_miss_ratio는 약 11.1%
https://yunhyeonglee.tistory.com/27
https://myinfrabox.tistory.com/242
https://dung-beetle.tistory.com/70