• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 1. MySQL Server
    1. 서버 옵션 및 변수 설명
    2. 서버 구성의 기본값
    3. 서버 명령 옵션
    4. 서버 시스템 변수
    5. 시스템 변수 사용
    1. 구조적 시스템 변수
    2. 동적 시스템 변수
    6. 서버 상태 변수
    7. 서버 SQL 모드
    8. 서버 플러그인
    9. IPv6 지원
    10. 서버측 도움말
    11. 신호에 대한 서버 응답
    12. 서버 셧다운 프로세스
    2. MySQL Server 로그
    3. 하나의 시스템에서 여러 MySQL 인스턴스 실행
    4. DTrace를 사용하여 mysqld 추적
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

5.1.5 시스템 변수 사용

5.1.5.1 구조 시스템 변수
5.1.5.2 동적 시스템 변수

MySQL Server는 그 구성 방법을 지시하는 많은 시스템 변수가 유지되고 있습니다. 섹션 5.1 "서버 시스템 변수" 이러한 변수의 의미가 포함되어 있습니다. 각 시스템 변수에는 기본값이 있습니다. 시스템 변수는 명령 행 옵션을 사용하거나 옵션 파일에서 서버를 시작할 때 설정할 수 있습니다. 이들의 대부분은 SET 문을 사용하여 서버 실행 중에 동적으로 변경할 수 있으며,이를 통해 서버를 중지하고 다시 시작할 필요없이 서버의 동작을 변경할 수 있습니다. 시스템 변수 값을 수식에서 참조 할 수 있습니다.

서버에는 두 종류의 시스템 변수가 유지되고 있습니다. 글로벌 변수는 서버의 전체 작업에 영향을줍니다. 세션 변수는 개별 클라이언트 연결 작업에 영향을줍니다. 소정의 시스템 변수는 글로벌 값과 세션 값을 모두 가질 수 있습니다. 글로벌 시스템 변수와 세션 시스템 변수는 다음과 같이 관련되어 있습니다.

  • 서버가 시작하면 서버는 모든 글로벌 변수를 기본값으로 초기화합니다. 이러한 기본값은 명령 행에 지정된 옵션 또는 옵션 파일에서 변경할 수 있습니다. ( 섹션 4.2.3 "프로그램 옵션 지정" 을 참조하십시오.)

  • 서버는 연결하는 각 클라이언트의 세션 변수 세트도 보유​​하고 있습니다. 클라이언트의 세션 변수는 대응하는 글로벌 변수의 현재 값을 사용하여 연결시에 초기화됩니다. 예를 들어, 클라이언트의 SQL 모드는 세션 sql_mode 값으로 제어되지만이 값은 클라이언트가 sql_mode 전역 값에 연결할 때 초기화됩니다.

시스템 변수 값은 명령 행 옵션 또는 옵션 파일을 사용하면 서버 시작시 전역으로 설정할 수 있습니다. 부팅 옵션을 사용하여 숫자를 가지고 값을 설정할 때 값은 1024,1024 2 또는 1024 3의 배수를 나타내는 K , M 또는 G 의 접미사 (대소있는 소문자)으로 지정할 수 각각 킬로바이트, 메가 바이트 또는 기가 바이트 단위를 나타냅니다. 그러면 다음 명령은 16M 바이트의 쿼리 캐시 크기와 1G 바이트의 최대 패킷 크기에서 서버를 시작합니다.

 mysqld --query_cache_size = 16M --max_allowed_pa​​cket = 1G

옵션 파일에서 이러한 변수는 다음과 같이 설정됩니다.

 [mysqld]
 query_cache_size = 16M
 max_allowed_pa​​cket = 1G

접미사의 대문자, 소문자는 상관없이 16M 와 16m , 1G 와 1g 을 동등합니다.

SET 문을 사용하여 실행시에 시스템 변수에 설정할 수있는 최대 값을 제한하려면 서버를 시작할 때 --maximum- var_name = value 형식의 옵션을 사용하면이 최대 값을 지정할 수 있습니다. 예를 들어, query_cache_size 의 값이 실행시 32M 바이트를 초과하지 않도록하려면 옵션 --maximum-query_cache_size=32M 를 사용합니다.

많은 시스템 변수는 동적이며 SET 문을 사용하여 서버가 실행중인 동안 변경할 수 있습니다. 목록 내용은 섹션 5.1.5.2 "동적 시스템 변수" 를 참조하십시오. SET 를 이용하여 시스템 변수를 변경하려면 선택적으로 수식어 앞에하는 var_name 으로 시스템 변수를 참조하십시오.

  • 변수가 전역 변수임을 명시 적으로 지시하기 위하여는 그 이름 앞에 GLOBAL 또는 @@global. 을 지정합니다. 전역 변수를 설정하려면 SUPER 권한이 필요합니다.

  • 변수가 세션 변수임을 명시 적으로 지시하는 그 이름 앞에 SESSION , @@session. 또는 @@ 를 넣습니다. 세션 변수를 설정하는 데 특별한 권한이 필요하지 않지만, 클라이언트는 자신의 세션 변수만을 변경할 수 있으며, 다른 클라이언트의 변수는 변경할 수 없습니다.

  • LOCAL 과 @@local. 은 SESSION 과 @@session. 동의어입니다.

  • 수식이 아무것도 없으면, SET 은 세션 변수를 변경합니다.

SET 문은 쉼표로 구분 된 여러 변수 할당을 포함 할 수 있습니다. 여러 시스템 변수를 설정하면 문에서 가장 최근의 GLOBAL 또는 SESSION 수식이 지정된 한정자가없는 후속 변수에 사용됩니다.

예 :

 SET sort_buffer_size = 10000;
 SET @@ local.sort_buffer_size = 10000;
 SET GLOBAL sort_buffer_size = 1000000, SESSION sort_buffer_size = 1000000;
 SET @@ sort_buffer_size = 1000000;
 SET @@ global.sort_buffer_size = 1000000 @@ local.sort_buffer_size = 1000000;

시스템 변수 @@ var_name 구문은 다른 일부 데이터베이스 시스템과의 호환성을 지원하고 있습니다.

세션 시스템 변수를 변경하면 세션이 끝날 때까지 또는 변수를 다른 값으로 변경하기 전까지는 그 값이 적용됩니다. 다른 클라이언트는 변경을 볼 수 없습니다.

글로벌 시스템 변수를 변경하면 그 값은 서버가 재시작 할 때까지 기억되어 새로운 연결에 사용됩니다. (글로벌 시스템 변수를 영구적으로 설정하려면 옵션 파일에 설정해야합니다.) 글로벌 변수에 액세스하는 모든 클라이언트가 변경을 확인할 수 있습니다. 그러나 변경은 변경 후 연결하는 클라이언트의 해당 세션 변수에만 영향을 미칩니다. 글로벌 변수의 변경은 현재 연결된 클라이언트의 세션 변수에 영향을주지 않습니다 ( SET GLOBAL 명령문을 발행하는 클라이언트 세션 변수에 영향을주지 않습니다).

오용을 방지하기 위해 SET SESSION 과에서만 사용할 수있는 변수와 함께 SET GLOBAL 를 사용하거나 전역 변수를 설정할 때 GLOBAL (또는 @@global. )를 지정하지 않으며 경우에 MySQL에서 오류가 발생합니다.

SESSION 변수를 GLOBAL 값으로 설정하거나 GLOBAL 값을 컴파일시 MySQL의 기본값으로 설정하거나하려면 DEFAULT 키워드를 사용합니다. 예를 들어, 다음 두 명령문은 max_join_size 의 세션 값을 글로벌 값으로 설정하는데있어서 동일합니다.

 SET max_join_size = DEFAULT;
 SET @@ session.max_join_size = @@ global.max_join_size;

모든 시스템 변수를 DEFAULT 로 설정되는 것은 아닙니다. 그런 경우 DEFAULT 를 사용하면 오류가 발생합니다.

중 하나 @@ 한정자를 사용하여 특정 글로벌 시스템 변수 또는 세션 시스템 변수의 값을 식으로 볼 수 있습니다. 예를 들어, 다음과 같이 SELECT 문에서 값을 얻을 수 있습니다.

 SELECT @@ global.sql_mode @@ session.sql_mode @@ sql_mode;

@@ var_name 과 같은 식으로 시스템 변수를 참조 할 때 (즉, @@global. 또는 @@session. 을 지정하지 않으면), MySQL은 세션 값이 존재하면 그것을 돌려주고, 그렇지 않으면 글로벌 값을 돌려줍니다. (이것은 항상 세션 값을 참조하는 SET @@ var_name = value 와는 다릅니다.)

참고

SHOW VARIABLES 에 의해 표시되는 일부 변수는 SELECT @@ var_name 구문에서 사용할 수없는 경우가 있고, '알수 없는 시스템 변수입니다' 로 표시됩니다. 그 경우의 해결 방법으로 SHOW VARIABLES LIKE ' var_name ' 를 사용할 수 있습니다.

값 승수를 지정하는 접미사는 서버를 시작할 때 변수를 설정할 때 사용할 수 있지만 런타임에 SET 값을 설정하는 데 사용할 수 없습니다. 한편, SET 을 사용하면 수식을 사용하여 변수의 값을 할당 할 수 있지만, 서버를 시작할 때 변수를 설정할 때 사용할 수 없습니다. 예를 들어, 서버를 시작할 때 다음의 첫 번째 줄은 유효하지만 두 번째 줄은 무효입니다.

 shell> mysql --max_allowed_packet=16M
 shell> mysql --max_allowed_packet=16*1024*1024

반대로, 실행시 다음 두 번째 줄은 유효하지만 첫 번째 줄은 무효입니다.

 mysql> SET GLOBAL max_allowed_packet=16M;
 mysql> SET GLOBAL max_allowed_packet=16*1024*1024;
참고

일부 시스템 변수는 SET 문을 ON 또는 1 로 설정하여 활성화되고, OFF 또는 0 으로 설정하면 비활성화됩니다. 그러나 이러한 변수를 명령 행 또는 옵션 파일에서 설정하려면 1 또는 0 으로 설정해야, ON 또는 OFF 로 설정하면 작동하지 않습니다. 예를 들어, 명령 행에서 --delay_key_write=1 은 작동하지만 --delay_key_write=ON 은 작동하지 않습니다.

시스템 변수 이름과 값을 표시하려면 SHOW VARIABLES 문을 사용합니다.

 mysql> SHOW VARIABLES;
+---------------------------------+-----------------------------------+
| Variable_name                   | Value                             |
+---------------------------------+-----------------------------------+
| auto_increment_increment        | 1                                 |
| auto_increment_offset           | 1                                 |
| automatic_sp_privileges         | ON                                |
| back_log                        | 50                                |
| basedir                         | /home/mysql/                      |
| binlog_cache_size               | 32768                             |
| bulk_insert_buffer_size         | 8388608                           |
| character_set_client            | latin1                            |
| character_set_connection        | latin1                            |
| character_set_database          | latin1                            |
| character_set_results           | latin1                            |
| character_set_server            | latin1                            |
| character_set_system            | utf8                              |
| character_sets_dir              | /home/mysql/share/mysql/charsets/ |
| collation_connection            | latin1_swedish_ci                 |
| collation_database              | latin1_swedish_ci                 |
| collation_server                | latin1_swedish_ci                 |
...
| innodb_additional_mem_pool_size | 1048576                           |
| innodb_autoextend_increment     | 8                                 |
| innodb_buffer_pool_size         | 8388608                           |
| innodb_checksums                | ON                                |
| innodb_commit_concurrency       | 0                                 |
| innodb_concurrency_tickets      | 500                               |
| innodb_data_file_path           | ibdata1:10M:autoextend            |
| innodb_data_home_dir            |                                   |
...
| version                         | 5.1.6-alpha-log                   |
| version_comment                 | Source distribution               |
| version_compile_machine         | i686                              |
| version_compile_os              | suse-linux                        |
| wait_timeout                    | 28800                             |
+---------------------------------+-----------------------------------+

LIKE 절에서는 문은 패턴과 일치하는 변수 만 표시합니다. 특정 변수 이름을 검색하려면 LIKE 절을 다음과 같이 사용합니다.

 SHOW VARIABLES LIKE 'max_join_size';
 SHOW SESSION VARIABLES LIKE 'max_join_size';

이름이 패턴과 일치하는 변수의리스트를 취득하려면 LIKE 절에서 " % "와일드 카드 문자를 사용합니다.

 SHOW VARIABLES LIKE '% size %';
 SHOW GLOBAL VARIABLES LIKE '% size %';

와일드 카드 문자는 일치되는 패턴의 어떤 장소에서도 사용할 수 있습니다. 엄밀히 말하면, " _ "는 임의의 단일 문자와 일치하는 와일드 카드이기 때문에 문자 그대로 일치 시키려면" \_ "로 탈출하십시오. 사실, 이것은 거의 필요하지 않습니다.

SHOW VARIABLES 로 GLOBAL 와 SESSION 을 모두 지정하지 않으면, MySQL은 SESSION 값을 반환합니다.

GLOBAL 전용 변수를 설정할 때 GLOBAL 키워드가 필요하지만, 그들을 얻을 때 키워드가 필요하지 않은 이유는 향후 문제를 방지합니다. GLOBAL 변수와 같은 이름을 가진 SESSION 변수를 삭제 한 경우 SUPER 권한을 가진 클라이언트가 그 연결을위한 SESSION 변수뿐만 아니라 잘못 GLOBAL 변수도 변경 될 가능성이 있습니다. SESSION 변수를 GLOBAL 변수와 동일한 이름을 추가 할 경우 클라이언트가 GLOBAL 변수를 변경하려고했으나 클라이언트 SESSION 변수 만 변경되어 버릴 가능성이 있습니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved