5.1.5.1 구조적 시스템 변수
구조 시스템 변수는 두 가지 점에서 보통의 시스템 변수와 다릅니다.
이 값은 밀접하게 관련하는 것으로 간주 서버 매개 변수를 지정하는 구성 요소가있는 구조입니다.
특정 유형의 구조 변수에 여러 인스턴스가있을 수도 있습니다. 각각 다른 이름을 가지고 서버에 의해 유지되는 다른 리소스를 참조하십시오.
MySQL 5.6에서는 하나의 구조 변수 타입을 지원하며,이 구조 변수 타입은 키 캐시의 조작을 제어하는 매개 변수를 지정합니다. 키 캐시 구조 변수는 다음 구성 요소가 있습니다.
key_buffer_size
key_cache_block_size
key_cache_division_limit
key_cache_age_threshold
이 섹션에서는 구조 변수를 참조하는 구문에 대해 설명합니다. 키 캐시 변수는 구문의 예에서 사용되지만, 키 캐시의 사용 방법에 대한 구체적인 내용은 섹션 8.9.2 "MyISAM 키 캐시" 에 기재되어 있습니다.
구조 변수 인스턴스의 구성 요소를 참조하려면 instance_name.component_name
형식의 복합 명을 사용할 수 있습니다. 예 :
hot_cache.key_buffer_size hot_cache.key_cache_block_size cold_cache.key_cache_block_size
각각의 구조 시스템 변수는 default
라는 이름의 인스턴스가 항상 사전 정의됩니다. 인스턴스 이름을 붙이지 않고 구조 변수 컴퍼넌트를 참조하는 경우 default
인스턴스가 사용됩니다. 즉, default.key_buffer_size
및 key_buffer_size
는 모두 동일한 시스템 변수를 말합니다.
구조 변수 인스턴스 및 구성 요소는 다음과 같은 명명 규칙을 따릅니다.
특정 유형의 구조 변수에 대해 각각의 인스턴스는 그 유형의 변수의 범위 내에서 고유 한 이름을 가져야합니다. 그러나 인스턴스 이름은 구조 변수 타입을 걸쳐 고유 할 필요는 없습니다. 예를 들어, 각 구조 변수는
default
라는 이름의 인스턴스가 있기 때문에default
는 변수 타입을 걸쳐 고유하지 않습니다.각 구조 변수 타입의 컴퍼넌트의 이름은 모든 시스템 변수 이름에서 고유해야합니다. 이렇게하지 않을 경우 (즉, 두 가지 구조 변수 타입이 구성 요소 멤버 이름을 공유하는 경우) 인스턴스 이름으로 규정되지 않는 멤버 이름에 대한 참조에 사용하는 기본 구조 변수가 명확하지 않습니다.
구조 변수 인스턴스 이름이 인용되지 않은 식별자로 사용할 수없는 경우, 역 인용 부호를 사용하여 인용 된 식별자로이를 지정합니다. 예를 들어,
hot-cache
는 사용하지 않지만,`hot-cache`
은 유효합니다.global
,session
,local
유효한 인스턴스 이름이 없습니다. 이것은 비 구조적 시스템 변수를 참조하기위한@@global.
과 같은 표기법에서의 충돌을 방지합니다.var_name
현재는 구조 변수 타입은 키 캐시의 것만이기 때문에 처음 두 규칙이 위반 될 가능성은 없습니다. 이러한 규칙은 다른 어떠한 구조 변수 타입이 미래 작성된 경우에 중요성을 띠게됩니다.
하나의 예외는 있지만, 단순한 변수 이름을 지정할 수있는 모든 컨텍스트에서 복합 명을 사용하면 구조 변수의 컴퍼넌트를 참조 할 수 있습니다. 예를 들어, 명령 행 옵션을 사용하면 구조 변수에 값을 할당 할 수 있습니다.
shell> mysqld --hot_cache.key_buffer_size=64K
옵션 파일에서 다음 구문을 사용합니다.
[mysqld] hot_cache.key_buffer_size = 64K
이 옵션에서 서버를 시작하면 기본 크기가 8M 바이트의 기본 키 캐시 외에도 크기가 64K 바이트의 hot_cache
라는 이름의 키 캐시가 생성됩니다.
다음과 같이 서버를 시작했다고합니다.
shell>mysqld --key_buffer_size=256K \
--extra_cache.key_buffer_size=128K \
--extra_cache.key_cache_block_size=2048
이 경우 서버는 디폴트 키 캐시의 크기를 256K 바이트로 설정합니다. ( --default.key_buffer_size=256K
로 작성할 수도 있습니다.) 또한이 서버는 128K 바이트의 크기를 가진 extra_cache
라는 두 번째 키 캐시를 생성하고 테이블 인덱스 블록의 캐시 블록 버퍼의 크기를 2048 바이트로 설정합니다.
다음 예제에서는 크기의 비가 3 : 1 : 1 인 3 가지 키 캐시를 사용하여 서버를 시작합니다.
shell>mysqld --key_buffer_size=6M \
--hot_cache.key_buffer_size=2M \
--cold_cache.key_buffer_size=2M
구조 변수 값은 런타임에 설정하고 검색 할 수 있습니다. 예를 들어, hot_cache
라는 이름의 키 캐시를 10M 바이트의 크기로 설정하려면 다음 문 중 하나를 사용합니다.
mysql>SET GLOBAL hot_cache.key_buffer_size = 10*1024*1024;
mysql>SET @@global.hot_cache.key_buffer_size = 10*1024*1024;
캐시 크기를 검색하려면 다음과 같이합니다.
mysql> SELECT @@global.hot_cache.key_buffer_size;
그러나 다음 문은 작동하지 않습니다. 이 변수는 복합 명으로 해석되지 않고 LIKE
패턴 매칭 작업을 단순 문자열로 해석됩니다.
mysql> SHOW GLOBAL VARIABLES LIKE 'hot_cache.key_buffer_size';
이것은 간단한 변수 이름을 지정 할 수있는 모든 곳에서 구조 변수를 사용할 수있는 예외입니다.