자세히 합리적인 구성에서의 MySQL 5.6 table_open_cache 매개 변수 최적화

1 소개

table_cache는 매우 중요하다 MySQL의 그것, 성능 매개 변수 5.1.3 이후 버전이라고 table_open_cache을 . table_cache는 주로 세트에 사용되는 테이블 캐시의 수입니다. 각 클라이언트 연결 테이블 액세스 적어도 하나, 따라서 파라미터의 값을 보낸 MAX_CONNECTIONS 관련.
예를 들어, A의 1,000 병렬 연결에서 작동하므로 캐시 테이블 적어도 가져야 × 1000 N , N는 응용 프로그램의 테이블 쿼리가 실행될 수 조인의 최대 개수이다. 또한, 임시 테이블 및 파일에 대한 필요성이 몇 가지 추가 파일 기술자 남아있다.

2 , 캐시 메커니즘

연결이 테이블에 액세스하기 위해, MySQL의 캐시 테이블의 점검 현재 수. 테이블이 캐시에 이미 열려있는 경우, 캐시 테이블에 직접 액세스 쿼리 최대 속도 일 것이다 테이블이 캐시되지 않은 경우, 캐시는 현재 테이블 및 쿼리에 추가됩니다.

캐시 작업을 수행하기 전에, table_open_cache는 현재 테이블에 이미 도달 캐시되지 않은 경우 : 캐시 테이블의 최대 수를 제한하는 데 사용 table_open_cache 이 값에 도달 한 경우,;, 추가 될 새 테이블에 와서 MySQL의가 , 마지막으로 쿼리 캐시 테이블을 기반됩니다 캐시 된 쿼리 속도를 해제하기 전에 규칙. 때마다 MySQL은 버퍼 테이블 공간이있는 경우, 테이블에 액세스하는 테이블이 열리고 신속 내용의 테이블에 액세스 할 수 있도록, 그것으로 넣어.

3 , 어떻게 판단하는

상태 값 확인하여 피크 시간 Open_tables Opened_tables이는 증가할지 여부를 결정할 수 있습니다 table_open_cache 값입니다.

당신이 찾아내는 경우에 open_tables은 동일 table_open_cache을 하고 Opened_tables이 성장은, 당신은 증가시킬 필요가 table_open_cache 의 값 (당신이 사용할 수있는 위에 언급 한 상태 값 SHOW GLOBAL STATUS LIKE '열기 % 테이블 ' GET을).

참고 맹목적 table_open_cache 큰 값으로 설정합니다. 너무 높게 설정하면 불안정한 성능이나 연결 실패의 결과로, 파일 기술자가 부족한 원인이 될 수 있습니다.

Open_tables / Opened_tables이> = 0.85

Open_tables / table_cache <= 0.95

4 , 제안

당신이 확실하지 시작하면, 다음의 MySQL의 시간을위한 생산 환경 테스트 실행에서 데이터베이스는 다음보다 파라미터 조정의 값 Opened_tables이 더 큰 값과 비율을 보장하기 위해 심지어 부하의 극단적 인 조건에서 상대적으로 높은 아직 Opened_tables이 약간 큰.
에서는 MySQL의 기본 설치 상황 table_cache 가치 세대 시스템의 디폴트의 값이보다 적은 메모리 256 다오 (512) , 기기가있는 경우 세대 메모리 , 기본값은 2,048 만,이 결정 수단 큰 기기의 메모리 즉,이 값 이 때문에 커야 table_cache 의 증가 후, 만들기 MySQL의 SQL의 빠른 응답 속도, 필연적으로 더 교착 상태 (의 생산 죽은 잠금 심각하게 영향을 미치는), 그래서 대신 데이터베이스 작업의 전체 세트를 천천히 아래로 만들기 성능을 제공합니다. 그래서 일반적으로 유지 보수 또는 라이브러리의 실제 상황에 따라 판단을 만들기 위해, 당신이 라이브러리를 유지하기위한 가장 적합한 찾을 수 table_cache 값입니다.

MySQL의> 플러시 테이블을, 그것은 수 open_tables는 삭제

# 서비스의 mysqld 다시 시작 말할 수 Opened_tables이 허가를

다음은 MySQL의 5.6 에 대한 설명

table_open_cache은 캐시 테이블의 크기를 지정합니다. 때마다 MySQL은 버퍼 테이블 공간이있는 경우, 테이블에 액세스하는 테이블이 열리고 신속 내용의 테이블에 액세스 할 수 있도록, 그것으로 넣어.
상태 값 확인하여 피크 시간 Open_tables Opened_tables이는 증가할지 여부를 결정할 수 있습니다 table_open_cache 값입니다.
당신이 찾아내는 경우에 open_tables은 동일 table_open_cache을 하고 Opened_tables이 성장은, 당신은 증가시킬 필요가 table_open_cache 의 값 ( 이상 언급 한 상태 값 SHOW GLOBAL STATUS LIKE '열기 % 테이블 ' GET을 ) .
참고 맹목적 table_open_cache 더 세트보다 큰 값으로 설정 파일 기술자 ( 의해 -n되는 ulimit ) , 파일 기술자가 부족한 결과 불안정한 성능이나 접속 불량을 초래.

테스트 환경 : 텐센트 클라우드 CDB , 메모리 4000M , 콘솔보기에 table_open_cache = 512 , 모니터링 table_open_cache의 세트는, 최적화의 필요성 합리적이다.

?

1

같은 변수를 보여 '% table_open_cache %'를;

?

1

글로벌 보여 같은 상태 '열기 % 테이블';

실측치 open_tables는 동일 table_open_cache를 한다 (512)가 , 그 지시 MySQL이 새로운 릴리스 테이블을 수용하기 위해 캐시 테이블되는 것은,이 시간 늘려야 table_open_cache 세대 메모리 시스템에 제안 집합 2048

더 적절한 값 :

Open_tables / Opened_tables이> = 0.85
Open_tables / table_open_cache <= 0.95

如果对此参数的把握不是很准,有个很保守的设置建议:把MySQL数据库放在生产环境中试运行一段时间,然后把参数的值调整得比Opened_tables的数值大一些,并且保证在比较高负载的极端条件下依然比Opened_tables略大。

 

发布了420 篇原创文章 · 获赞 67 · 访问量 39万+

추천

출처blog.csdn.net/w892824196/article/details/103948712