Real MariaDB (2017년)
성능 향상 0 0 39,231

by 구루비스터디 MariaDB 성능향상 Thread Pool [2019.08.11]


7.1.1 스레드 풀(Thread Pool)

7.1.1.1 MySQL 서버의 전통적인 연결 및 처리방식

1(Client):1(Thread) 방식
  • 단점 : 스레드가 많아질 수록 서버내 자원에 대한 병목 현상 발생
  • 이를 보안하기 위해서 Concurrent Thread 수를 낮추어 컨텍스트 스위치를 줄이는 위해 도입된 방법이 Thread Pool 입니다.


7.1.1.2 MariaDB의 스레드 풀

  • 5.1 버전부터 기능 구현, 10.X 이후로 계속적으로 개선되고 있음


MariaDB의 Thread Pool의 장점
  • 자동 스레드 개수조절
  • 스레드풀 자체 관리 비용 낮음
  • 운영체제에서 지원하는 스레드 방식 구현, 아닐 경우 IO 멀티 플렉싱 방법 사용
  • 스레드 최대개수 제한으로 자원사용 제한


윈도우 (네이티브 스레드 풀)
  • thread_pool_size 시스템 변수 지원 안됨
  • 유닉스 (직접 스레드풀) 구현
  • threadpool_min_threads 시스템 변수 형식적으로만 존재
  • 유저 → 커넥션 정보 → 스레드풀(여유 스레드 확인,없으면 새로 생성) → 할당 → 정상 접속 및 질의 수행
  • 성능향상 : CPU 바운드 작업인 경우
  • 성능저하 : 쿼리요청이 늘어나다 다시 부하가 거의 없는 경우


7.1.1.3 MariaDB 스레드 풀의 사용과 튜닝

  • 우선 , Thead_handling 시스템변수 값을 one-thread-per-connection 에서 pool of threads로 변경


7.1.1.3.1 윈도우즈 스레드 풀 관련 시스템 변수 설정
  • thread_pool_min_threads = 최소 스레드 개수
  • thread_pool_max_threads = 최대 스레드 개수


7.1.1.3.2 유닉스 계열의 스레드 풀 관련 시스템 변수 설정
thread_pool_size = 스레드 그룹개수 , MariaDB 5.5에서만 제공
thread_pool_stall_limit = 스레드풀이 하나도 없을 경우 대기시간 설정변수(ms), MariaDB 5.5만 제공
thread_pool_max_threads = 최대 스레드 개수
thread_pool_idle_timeout = IDLE 상태 스레드 개수를 줄이기 위한 대기 시간,MariaDB 5.5에서만 제공
thread_pool_oversubscribe = 인터널 파라미터 , MariaDB 5.5에서만 제공


  • 커넥션이 많은 경우 설정 파라미터
extra_port = 관리자용 별도 포트
extra_max_connections = 최대 몇개의 커넥션을 연결할지 정의하는 파라미터


  • 스레드풀 상태확인(Monitoring) 파라미터
threadpool_threads 스레드풀에 있는 스레드 개수
threadpool_idle_threads 남아있는 스레드 개수


7.1.1.4 주의 사항

  • 스레드풀 활성화 시 스레드 캐시 비활성화 된다.
  • 스레드풀을 다 사용할 경우 error log에 ERROR발생을 주기적으로 확인해야 한다.


"구루비 데이터베이스 스터디모임" 에서 2017년에 "Real MariaDB" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4209

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입