-
MySQL system variablesMySQL 2022. 7. 4. 16:02
- MySQL system variables
- system variables 포맷
- system variables 값 확인 방법
- system variables 값 수정 방법
- system variables Modifier
- system variables 목록
MySQL system variables
MySQL system variables 은 MySQL 의 동작에 영향을 주는 변수입니다.
MySQL option 과 마찬가지로 MySQL Server 의 Command-line 옵션 또는 Option 파일에 변수의 값을 지정하여 실행 중에 적용하거나 재시작 시 적용되도록(program startup 옵션) 사용할 수 있습니다.
system variables 에는 global system variables 과 session system variables 가 있습니다.
어떤 system variables 는 global system variables 과 session system variables 모두 가능합니다.
system variables 의 목록을 참고하세요.
- global system variables 는 모든 session 에 영향을 주는 변수입니다.
- MySQL Server 가 시작할 때 내장된 default 값으로 초기화 됩니다.
- default 값들은 MySQL Server 의 Command-line Option 또는 Option 파일에 의해 지정된 값으로 수정될 수 있습니다.
- 어떤 global system variables 는 값을 수정할 수 없습니다.
- session system variables 는 현재 접속된 session 에 영향을 주는 변수입니다.
- MySQL Server 로 새로운 Client 가 연결될 때 마다 global system variables 의 값을 복사하여 만들어집니다.
- MySQL Client 의 Command-line Option 또는 Option 파일에 의해 지정된 값으로 수정될 수 있습니다.
- 어떤 session system variables 는 값을 수정할 수 없습니다.
- Dynamic system variables
- Dynamic 속성을 가진 system variables 입니다.
- global system variables 가 Dynamic 속성을 가진다면 MySQL Server 가 실행 중에 값을 변경할 수 있지만 현재 접속 중인 Client 에는 영향을 주지 않고 다음에 접속한 Client 가 영향을 받습니다.
- session system variables 가 Dynamic 속성이 있다면 현재 접속한 Client 만 영향을 받습니다.
- Dynamic system variables 의 목록을 참고하세요.
- Read-Only system variables
- 사용자가 수정할 수 없는 것과 수정할 수 있는 것으로 나뉩니다.
- 수정할 수 없는 Read-Only system variables 는 MySQL Server 의 버전 정보를 담고 있는 protocol_version 처럼 사용자가 변경할 수 없는 global system variables 나 session system variables 입니다.
- 수정할 수 있는 Read-Only system variables 는 MySQL Server 를 재시작 해야 적용할 수 있는 Dynamic 속성이 없는 global system variables 입니다.
system variables 는 SELECT 문과 같은 쿼리문 안에서도 참조가 가능합니다. 관련 내용에 대해서는 아래 링크를 참고하세요.
system variables 는 아래의 3가지 방식으로 MySQL 에 포함됩니다.
구분 설명 Built-in 기본적으로 내장되어 있는 system variables Plugin Plugin 이 설치되면 포함됩니다.
Plugin 이름이 system variables 앞에 붙습니다.Component Component 가 설치되면 포함됩니다.
Component 에서 지정한 접두사가 system variables 앞에 붙습니다.
system variables 포맷
system variables 는 이름 중간에 "_"(underscore) 를 가집니다. 그러나 어떤 경우에는 "-"(dash) 를 사용하는 경우도 있습니다. 아래는 상황에 따른 사용방법 입니다.
case description examples Command-line Option 이름 앞에 "--" 가 붙습니다.
이름 중간에는 “_”(underscroe) 또는 “-”(dash) 를 사용합니다.
일반적으로 Option 은 "-"(dash) 를 사용합니다.--this-is-system-variables=value
or
--this_is_system_variables=valueOption 파일 “_”(underscroe) 또는 “-”(dash) 를 사용합니다. this_is_system_variables=value
or
this-is-system-variables=valueSET statement “_”(underscroe) 를 사용합니다. this_is_system_variables SELECT 문과 같은 쿼리 “_”(underscroe) 를 사용합니다. this_is_system_variables 같은 이름이라도 "_"(underscore) 또는 "-"(dash) 의 사용에 따라 의미가 달라지는 경우도 있을 수 있으므로 주의하세요.
system variables 값 확인 방법
아래와 같이 4가지 방식이 시용됩니다.
그러나 현재 실행중인 서버에 적용된 값을 확인하려면 첫 번째 방법은 사용하지 않습니다.
- MySQL Option 을 사용한 방법
- SHOW VARIABLES statement
- 관리 database 에서 직접 확인하는 방법
- mysqladmin 을 사용한 방법
- 쿼리문으로 확인하는 방법
MySQL Option 을 사용한 방법
- 자세한 사용법은 MySQL Option 의 [사용 가능한 Option 목록 확인 방법] 항목을 참조하세요.
example :
$ mysqld --verbose --helpMySQL program 에 대해 --verbose 와 --help 옵션을 사용하여 system variables 의 list 를 출력합니다.
참고로 결과 list 에는 system variables 의 이름 중간에 '_' (under bar) 가 '-' (dash) 로 바뀌어 출력됩니다. 결과에서 system variables 를 조회해야 할 경우 참고하세요.
출력된 값은 아래에서 설명될 다른 방식들과 차이가 납니다.
VARIABLE_NAME VARIABLE_VALUE MySQL Option 사용 show variables performance_schema mysqladmin select query max_connections 151 151 151 151 151 open_files_limit 8161 10000 10000 10000 10000 table_open_cache 4000 4000 4000 4000 4000 이러한 차이가 발생하는 이유는 MySQL 옵션을 사용하여 출력된 결과는 MySQL Server 가 내장하고 있는 기본 값들과 Option 파일에 지정한 값들을 출력하기 때문입니다. 즉 사용자가 별도로 Option 파일에 값을 지정하지 않은 변수들의 경우에는 내장된 기본 값들이 출력됩니다. 따라서 현재 실행 중인 Server 의 system variables 과는 차이가 있을 수 있습니다.
그 외 아래의 다른 방법들의 결과는 현재 실행중인 MySQL Server 의 system variables 의 값을 나타냅니다.
SHOW VARIABLES statement
mysql Command-line Client 를 사용하여 system variables 의 목록과 값을 확인 할 수 있습니다.
GLOBAL 또는 SESSION 을 지정하지 않을 경우 session system variables 가 출력됩니다.
아래의 예는 전체 system variables 에 값을 출력합니다.
example :
mysql> SHOW GLOBAL VARIABLES;
or
mysql> SHOW SESSION VARIABLES;아래의 예는 특정 system variables 의 값을 출력합니다.
example :
mysql> SHOW GLOBAL VARIABLES like '시스템 변수 이름';
or
mysql> SHOW SESSION VARIABLES like '시스템 변수 이름';관리 database 에서 직접 확인하는 방법
MySQL 관리 database 중 performance_schema database 에는 system variables 의 값이 저장된 Table 들이 존재합니다.
mysql Command-line Client 를 사용하여 해당 Table 에 대해 직접 Select 문으로 조회할 수 있습니다.
아래는 해당 Table 들의 목록과 예입니다.
Table 설명 global_variables global system variables 와 해당 값을 저장합니다.
example :
mysql> select * from global_variables where variable_name='max_connections';session_variables session system variables 와 해당 값을 저장합니다.
example :
mysql> select * from session_variables where variable_name='interactive_timeout';variables_by_thread 각 실행 중인 session 들의 session system variables 의 값을 저장합니다.
각 session 은 Thread ID 에 의해 구별 됩니다.
example :
mysql> select * from variables_by_thread;persisted_variables mysqld-auto.cnf 파일에 포함된 global system variables 를 저장합니다.
mysqld-auto.cnf 파일은 Option 파일의 [Option 파일 종류와 우선 순위] 항목을 참고하세요.
example :
mysql> select * from persisted_variables;variables_info 각 system variables 에 대한 값의 범위 등의 정보가 포함됩니다.
system variables 가 Option 파일에 지정되었다면 어느 파일인지의 정보를 포함합니다.
example :
mysql> select * from variables_info;mysqladmin 을 사용한 방법
mysqladmin program 의 variables 명령을 사용합니다.
variables 명령에 대해서는 mysqladmin 의 [사용법] -> [commands] 항목을 참고하세요.
아래의 예는 전체 system variables 에 값을 출력합니다.
example :
$ mysqladmin -u root -p variables아래의 예는 특정 system variables 의 값을 출력합니다.
example :
$ mysqladmin -u root -p variables | grep '시스템 변수 이름'쿼리문으로 확인하는 방법
system variables 값 수정 방법
MySQL Server 가 시작할 때 system variables 는 내장된 초기값으로 설정됩니다. 이 값을 수정하게 되면 MySQL Server 의 동작에 영향을 주게 됩니다. 수정 방법은 아래의 3가지 방식이 있습니다.
system variables 의 값을 변경할 때 지정한 값과 실제 변경된 값이 다를 수 있습니다.
이것은 최소값과 최대값을 벗어나는 값을 지정할 경우 자동으로 최소값 또는 최대값으로 조정되기 때문입니다.
또한 다른 system variables 의 값에 영향을 받는 경우에도 값이 조정됩니다.
system variables 가 파일의 경로를 값으로 가질 경우 상대경로가 입력된다면 MySQL data directory 가 기준이 됩니다. data directory 에 대해서는 MySQL 설치 후 기본 확인 사항 및 초기 설정 에서 [data 경로] 항목을 참고하세요.
일부 system variables 는 MySQL Server 가 실행 중인 상태에서 서버의 재시작 없이 값을 수정 적용 할 수 있습니다. 이런 system variables 는 Dynamic 속성을 가지고 있어야 합니다.
global system variables 을 수정하기 위해서는 SYSTEM_VARIABLES_ADMIN 권한이 필요합니다.
session system variables 을 수정하기 위해서는 어떤 권한도 필요없습니다.
Command-line Option
- MySQL Server program 을 실행할 때 system variables 를 옵션으로 지정하는 방법입니다.
- system variables 가 옵션으로 사용되려면 앞에 "--" 가 붙습니다.
- system variables 는 이름 중간에 "_"(underscore) 가 사용될 수 있지만 Command-line Option 으로 사용될 경우에는 일반적으로 "-"(dash) 가 사용됩니다.
- "=" 로 값을 지정할 수 있습니다.
- 지정된 값은 MySQL Server 의 현재 process 에만 영향을 줍니다. 재시작 시 항상 옵션을 지정해야 합니다.
System variables format Options format this_is_system_variables --this-is-system-variables=value
or
--this_is_system_variables=value아래는 system variables 인 interactive_timeout 에 대해 Command-line Option 으로 사용한 예입니다.
example :
$ mysqld --interactive-timeout=3600Option 파일
- Option 파일을 참고하세요.
- MySQL Server 가 시작할 때 Option 파일을 읽어 global system variables 에 지정된 값을 적용됩니다.
- Option 파일에 지정된 system variables 의 값은 MySQL Server 에 영구적으로 반영됩니다.
- Option 파일에 지정된 system variables 의 값을 변경할 경우 MySQL Server 를 다시 시작해야 합니다.
SET statement
- SET statement 를 참고하세요.
- system variables 의 값을 원격지에서도 수정할 수 있습니다.
- global system variables 에 대해 Dynamic 속성이 있을 경우 SET statment 를 사용하여 실행 중에 MySQL Server의 동작에 영향을 줄 수 있습니다. 현재 접속 중에 Client 는 영향을 받지 않고 다음에 접속한 Client 부터 영향을 받습니다. MySQL Server 를 재시작할 경우 이전에 지정했던 값들은 더 이상 적용되지 않습니다.
- session system variables 에 대해 Dynamic 속성이 있을 경우 SET statment 를 사용하여 현재 Client 에만 영향을 줄 수 있습니다.
- SET statement 를 사용하여 global system variables 를 mysqld-auto.cnf Option 파일에 기록함으로써 영구적으로 적용되도록 할 수 있습니다.
system variables Modifier
system variables 에 prefix 를 붙여 의미를 부여할 수 있습니다.
- system variables 앞에 --maximum 을 붙일 경우 해당 변수에 대해 지정할 수 있는 최대값을 설정합니다.
- --maximum prefix 는 session system variables 에만 사용할 수 있습니다.
예를 들어 아래와 같이 적용하면 MySQL Server 에 접속하는 모든 client 는 head table 크기를 32M 이상 사용할 수 없습니다.
example :
$ mysqld --maximum-max_heap_table_size=32M
system variables 목록
system variables 설명 Global Session Dynamic port TCP/IP 통신으로 MySQL Server 가 사용하는 포트 번호를 지정합니다. O mysqlx_port X Plugin 을 사용한 TCP/IP 통신에서 사용할 포트 번호를 지정합니다. O datadir MySQL data directory 의 경로를 지정합니다. O socket local 통신 방식에 대한 file 을 지정합니다. O log_error MySQL Server의 에러 로그가 기록될 파일을 지정합니다. O pid_file 현재 실행되는 MySQL Server 의 process ID 가 기록되는 파일을 지정합니다. O bind_address MySQL Server 가 listen 하는 client 의 address 를 지정합니다. O mysqlx_bind_address X Plugin 을 사용한 TCP/IP 통신에 대해 MySQL Server 가 listen 하는 client 의 address 를 지정합니다. O wait_timeout MySQL Server 가 noninteractive connection에 대한 연결을 종료하기 전에 대기하는 시간(초)을 지정합니다. O O O interactive_timeout MySQL Server 가 interactive connection에 대한 연결을 종료하기 전에 대기하는 시간(초)을 지정합니다. O O O skip_name_resolve Client 의 접속 시 host name 을 확인 하는지를 지정합니다. O thread_cache_size MySQL Server 는 Client 가 접속할 때 Thread 를 생성하여 요청을 처리합니다. 이때 매번 Thread 를 새로 생성하지 않고 재 사용하기 위해 cache 에 저장할 수 있습니다. 지정되는 값은 Thread cache 에 저장할 thread 의 개수입니다. O O thread_stack MySQL Server 는 Client 가 접속할 때 Thread 를 생성하여 요청을 처리합니다. 이때 각 Thread 에 대한 stack 크기를 지정합니다. O max_connections Client 의 동시 접속을 허용하는 최대 숫자를 지정합니다. O O open_files_limit MySQL Server 는 사용자의 접속 시 socket 과 같은 file descriptor 를 생성하게 됩니다. MySQL Server 가 사용하는 file descriptor 의 개수를 운영체제가 허가하는 범위 내에서 지정합니다. O table_open_cache Client 의 query 요청에 대한 처리를 위해 한번 Open 된 Table 은 cache 에 저장하여 재 사용합니다. 지정된 개수에 대한 cache 가 할당되어 Open 된 Table 을 보관합니다. 지정 값이 4000 이면 4000 개의 Open Table 이 보관됩니다. O O max-allowed-packet MySQL Server 의 통신 buffer 크기를 설정합니다. O O O table_open_cache_instance open table cache 를 group 으로 묶어 관리하는 개수를 설정합니다. O global_connection_memory_tracking MySQL Server 로 접속한 Client 에 의해 사용된 memory 의 크기를 계산하도록 지정 합니다. O O O slow_launch_time Client Thread 를 생성하는데 필요한 시간(second)을 지정합니다. O O long_query_time 쿼리문을 실행하는데 필요한 시간(second)을 지정합니다. O O O slow_query_log 느리게 실행되는 쿼리에 대한 log 를 기록할 지의 여부를 설정합니다. O O general_log general 쿼리에 대한 log 를 기록할 지의 여부를 설정합니다. O O log_output 쿼리에 대한 log 를 저장할 타입을 지정합니다. O O general_log_file general query log 가 FILE 로 기록될 경우 파일의 이름을 지정합니다. O O slow_query_log_file slow query log 가 FILE 로 기록될 경우 파일의 이름을 지정합니다. O O back_log MySQL Server 로의 요청에 대한 대기 queue 의 크기를 지정합니다. O max_connect_errors MySQL Server 접속 시도 횟수 제한을 설정합니다. O O host_cache_size host cache 의 크기를 지정합니다. O O max_execution_time SELECT statement 에 대한 timeout 을 milliseconds 단위로 지정합니다. O O O sort_buffer_size ORDER BY 또는 GROUP BY statement 에 의한 sort 수행 시 session 마다 할당되는 sort buffer 의 크기를 byte 단위로 지정합니다. O O O max_sort_length sort 시에 비교 대상 문자의 bytes 수를 지정합니다. sort 대상에 대해 max_sort_length 만큼만 비교하고 그 이후의 문자는 무시됩니다. O O O join_buffer_size join buffer 의 크기를 bytes 단위로 지정합니다. O O O default_storage_engine permanent tables 에 대한 storage engine 을 지정합니다. O O O default_tmp_storage_engine temporary tables 에 대한 storage engine 을 지정합니다. O O O 'MySQL' 카테고리의 다른 글
[statement] SET (0) 2022.07.11 MySQL status variables (0) 2022.07.06 MySQL Options (0) 2022.07.04 Option 파일 (0) 2022.07.01 SQLyog (0) 2022.06.17