DB/MySQL

MySQL 시스템 변수

로파이 2021. 12. 20. 22:30

MySQL 서버가 시작할 때 앞으로 어떻게 기동될 지 정의하는 변수

 

시스템 변수 확인

SHOW GLOBAL VARIABLES;

 

MySQL 서버 시스템 변수관련 페이지

https://dev.mysql.com/doc/refman/8.0/en/server-system-variable-reference.html

 

MySQL :: MySQL 8.0 Reference Manual :: 5.1.5 Server System Variable Reference

MySQL 8.0 Reference Manual  /  ...  /  MySQL Server Administration  /  The MySQL Server  /  Server System Variable Reference PREV   HOME   UP   NEXT

dev.mysql.com

  • Cmd-Line : Cmd 명령어로 변경 가능한 변수
  • Option File : 설정 파일 my.cnf로 제어할 수 있는 지 여부
  • System Var : 시스템 변수인가. 모든 시스템 변수들은 '_' 구분자를 사용
  • Var Scope : 시스템 변수의 적용 볌위
  • - Global : 전역 / Session : 서버 클라 연결 상에만 / Both : 모두 적용
  • Dynamic : 시스템 변수가 정적 인지 동적인지

 

글로벌 변수 vs 세션 변수

글로벌 변수 : 서버 인스턴스 전체에 적용 되는 시스템 변수

세션 변수 : MySQL 클라이언트가 MySQL 서버에 접속할 때 갖는 옵션의 기본값을 제어

Both로 명시된 변수는 MySQL 서버가 기억하고 있다가 연결이 만들어지는 세션에 기본값으로 적용된다.

세션만 허용된 변수는 서버에 미리 적용하는 것이 아니라 세션이 만들어지고 난 다음 개별 연결에 대해서만 적용 가능하다.

 

정적 변수 vs 동적 변수

 

설정 파일(my.ini 혹은 my.cnf)의 시스템 변수를 수정한다 vs 가동중인 MySQL 서버의 메모리의 시스템 변수를 수정한다.

 

실시간으로 가동중인 서버 시스템 변수를 변경할 수 있으면 동적 변수라고 한다. 

 

SET [GLOBAL] system_variable_name=value;

SET 명령을 통해 변경되는 시스템 변수는 가동중인 서버 인스턴스에만 유효하다. 설정 파일에 변경 사항이 반영되지 않는다.

 

ex) SET GLOBAL max_connections=5000;

 

GLOBAL 키워드는 글로벌 시스템 변수를 변경하며 키워드를 빼는 경우 세션 변수를 조회하고 변경한다.

 

시스템 변수의 범위가 Both 인 경우 기존에 만들어진 세션에는 적용되지 않고 글로벌 시스템 변수만 적용된다.

 

SET PERSIST

동적 변수의 경우 MySQL 서버에서 SET GLOBAL 명령으로 시스템 변수를 변경하면 MySQL 서버에 반영된다.

SET 명령어는 설정 파일까지 변경하지는 않는다.

SET PERSIST의 경우 서버에 변경을 적용하고 동시에 설정파일(mysqld-auto.cnf)에 변경 내용을 추가로 기록한다.

서버가 다시 시작될 때, 기본 설정 파일(my.cnf)와 자동 생성된 mysqld-auto.cnf를 같이 참조하여 시스템 변수를 적용한다.

SET PERSIST_ONLY의 경우 서버에는 적용하지 않고 설정 파일에만 변경사항을 적용한다.

PERSIST_ONLY는 실시간 서버에 적용하지 않기 때문에 정적 시스템 변수도 사용할 수 있다.

 

RESET PERSIST system_variable_name;

mysqld-auto.cnf 설정 파일의 일부 시스템 변수를 삭제할 때 사용한다.

 

'DB > MySQL' 카테고리의 다른 글

MySQL 인덱스  (0) 2022.01.09
MySQL 트랜잭션과 잠금  (0) 2022.01.02
MySQL InnoDB 스토리지 엔진 아키텍처  (0) 2021.12.30
MySQL 아키텍쳐  (0) 2021.12.29
MySQL 사용자 및 권한  (0) 2021.12.23