MySQL - Connection / Thread
DB 접속과 관련된 환경변수와 상태변수를 나타낸다.
환경 변수는 show variables like '환경변수'로 확인할 수 있고, 상태변수는 show status like '상태변수' 로 확인할 수 있다.
변수 | 설명 | 구분 |
max_connections | MySQL 서버가 허용하는 MySQL 클라이언트 동시 연결 최대값. max_connections +1"로 SUPER 권한을 가진 사용자(예 : root) +1의 연결 예약 |
환경변수 |
Max_used_connections | 지금까지 기록된 동시 연결 최대 수 | 상태변수 |
Threads_connected | 현재 열려있는 연결 수 | 상태변수 |
Threads_created | 연결을 처리하기 위해 생성된 스레드 | 상태변수 |
Threads_running | 작동중인 스레드 | 상태변수 |
Threads_cached | 상태변수 | |
Thread_cache_size | 재사용을 위해 서버가 캐시해야 하는 스레드 수 | 환경변수 |
Thread_cache_size
재사용을 위해 서버가 캐시해야 하는 스레드 수입니다. 클라이언트의 연결이 끊어지면 해당 스레드가 thread_cache_size보다 적은 경우 클라이언트의 스레드가 캐시에 저장됩니다. 스레드에 대한 요청은 가능하면 캐시에서 가져온 스레드를 재사용하여 충족되며, 캐시가 비어 있는 경우에만 새 스레드가 생성됩니다. 새로운 연결이 많은 경우 성능을 향상시키기 위해 이 변수를 늘릴 수 있습니다. 일반적으로 눈에 띄는 성능 향상을 제공하지 않습니다. 그러나 서버가 초당 수백 개의 연결을 확인하는 경우 일반적으로 대부분의 새 연결이 캐시된 스레드를 사용할 수 있도록 thread_cache_size를 충분히 높게 설정해야 합니다. Connections 및 Threads_created 상태 변수 간의 차이점을 조사하면 스레드 캐시가 얼마나 효율적인지 확인할 수 있습니다.
기본값은 다음 수식을 기반으로 하며 한도는 100입니다.
8 + (max_connections / 100)
참고)
Based on the info in the MySQL Documentation you should do the following: Find out what the highest number of simultaneous connections mysqld has had using Connections, Threads_created, and Max_used_connections,
- SHOW GLOBAL STATUS LIKE 'Connections';
- SHOW GLOBAL STATUS LIKE 'Threads_created';
- SHOW GLOBAL STATUS LIKE 'Max_used_connections';
Try calculating the following
Threads_created / Connections : If this is over 0.01, then increase thread_cache_size. At the very least, thread_cache_size should be greater than Max_used_connections.
- Questions/Uptime = 초당 쿼리수
- Connections / Uptime = 초당 연결수
- Questions / Connections = 연결당 쿼리 처리수