MySQL 문서에 따르면 thread_cache_size
대부분의 새로운 연결이 새로 작성된 스레드가 아닌 캐시의 스레드를 사용하도록 설정해야 합니다. 일반적으로 성능이 크게 향상되지는 않지만 스레드 생성 오버 헤드가 줄어 듭니다.
가능한 경우 캐시에서 가져온 스레드를 재사용하여 스레드 요청이 충족되며 캐시가 비어있는 경우에만 새 스레드가 작성됩니다. 새로운 연결이 많은 경우 성능을 향상시키기 위해이 변수를 늘릴 수 있습니다. 일반적으로 스레드 구현이 양호하면 성능이 크게 향상되지 않습니다 . 그러나 서버에 초당 수백 개의 연결이 표시되는 경우 일반적으로 대부분의 새 연결이 캐시 된 스레드를 사용 하도록 thread_cache_size를 충분히 높게 설정해야 합니다 . (출처)
즉 , 새 스레드를 생성하는 연결 비율이 다소 낮아 thread_cache_size
지도록 설정해야합니다 Threads_created / Connections
. MySQL 문서를 문자 그대로 ( "most") 가져 오는 경우 값은 <50 % 여야합니다. RolandoMySQLDBA의 답변은 <1 %입니다. 누가 진실에 더 가까운 지 모르겠습니다.
보다 높게 설정 해서는 안됩니다 . RolandoMySQLDBA의 답변 ( "최소한, thread_cache_size가 Max_used_connections보다 커야 함")의 마지막 문장은 서버 가 사용하는 것보다 더 많은 스레드를 캐시에 보관해야하므로 합리적으로 보이지 않습니다 . MySQL은 캐시에 많은 스레드를 넣지 않습니다. 캐시에 스레드를 미리 넣지 않습니다 . 클라이언트가 스레드를 만들고 연결을 끊은 후에 만 스레드를 배치합니다. X 클라이언트가 동시에 연결되지 않은 경우 캐시에 X 스레드가 없습니다.thread_cache_size
Max_used_connections
클라이언트가 연결을 끊을 때 thread_cache_size 스레드 수가 적은 경우 클라이언트 스레드가 캐시에 저장됩니다. (출처)
Michael의 답변 도 참조하십시오 .
thread_cache_size를 max_connections보다 큰 값으로 설정하면 엄청나게 도움이되지 않는 조언처럼 보입니다. 캐시는 max_connections보다 커질 수 없으며 해당 크기 근처의 캐시조차도 스레드에 엄청난 양의 이탈이있는 경우에만 의미가 있습니다. ... 잘 작동하는 응용 프로그램에서는 그렇지 않습니다.
/dba//a/28701