[SQL] MySQL 설정파일 - thread_cache_size

DeMar_Beom·2023년 9월 8일
3

SQL

목록 보기
5/17
post-thumbnail

thread_cache_size

개요

  • thread_cache_size의 의미 및 튜닝방법 확인

thread_cache_size란?

  • mysql은 Thread방식의 아키텍처로 설계되어 있으며, Clinet가 접속하게 되면 Thread를 할당해주고 접속이 종료되면 할당했던 Thread를 제거
  • Client가 접속할 때마다 Thread를 할당하고 제거하는 작업은 Mysql 서버에서는 리소스 낭비 및 성능 저하를 발생시켜 주기적인 모니터링이 필요
  • 즉, 스레드를 생성하고 해제할 때 메모리를 할당하고 캐시할 메모리를 미리 생성해놓고 적절하게 관리하는 용도

my.cnf 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를 결정하려 할 때 사용
  • 단, 특정 상황이나 세부 조정이 필요한 경우에는 조절 필요

global status 확인

show global status like "%threads_%";

  • Threads_cached : 스레드 캐시에 있는 스레드 수
  • Threads_connected : 현재 오픈된 스레드 수
  • Threads_created : 연결을 다루기 위해 생성된 스레드 수
  • Threads_runnging : sleep상태가 아닌 실행되고 있는 Thread 수

튜닝 방법

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%

튜닝 후 (thread_cache_size 20으로 변경)

show variables like '%thread_cache_size%';

업로드중..

show status like 'connections';

업로드중..

show status like '%threads_%';

업로드중..

--> 이 때 cache_miss_ratio는 약 11.1%

  • 저 같은 경우는 저 혼자 사용하는 개인 sql서버이며 만든지 얼마 안됬다 보니 값이 동일했습니다.
  • 다른 경우 좋은 예시는 밑에 참고로 달아놓았으니 확인해 보시면 좋을 거 같아요

참고

https://yunhyeonglee.tistory.com/27
https://myinfrabox.tistory.com/242
https://dung-beetle.tistory.com/70

0개의 댓글