MySQL 설정 파일
- my.cnf / my.ini 파일에 여러개의 설정 그룹을 담을 수 있다.
MySQL 시스템 변수의 특징
시스템 변수가 가지는 5가지 속성이 존재하는데 의미는 다음과 같다.
- Cmd-Line
- MySQL 서버의 명령행 인자로 설정될 수 있는지 여부를 나타낸다.
- 이 값이 YES이면 명령행 인자로 이 시스템 변수의 값을 변경하는 것이 가능하다는 의미다.
- Option file
- MySQL의 설정파일인 my.cnf로 제어할 수 있는지 여부를 나타낸다.
- 옵션 파일이나 설정 파일 또는 컨피규레이션 파일 등은 전부 my.cnf 파일을 지칭하는 것으로 같은 의미로 사용된다.
- System Var
- 시스템 변수인지 아닌지를 나타낸다. MySQL 서버의 설정 파일을 작성할 때 각 변수명에 사용된 하이픈(-)이나 언더스코어(_)의 구분에 주의해야 한다.
- MySQL 8.0 에서는 모든 시스템 변수들이 _를 구분자로 사용하도록 변경된 것으로 보인다. 그리고 명령행 옵션으로 사용 가능한 설정들은 -을 구분자로 사용한다.
- Var Scope
- 시스템 변수의 적용 범위를 나타낸다.
- 이 시스템 변수가 영향을 미치는 곳이 MySQL 서버 전체(글로벌 또는 전역)인지, MySQL 서버와 클라이언트간 커넥션(세션 또는 커넥션)인지를 구분 하거나 두 개 모두 적용(Both)되기도 한다.
글로벌 변수와 세션 변수
MySQL의 시스템 변수는 적용 범위에 따라 글로벌 변수와 세션 변수로 나뉘는데, 일반적으로 세션별로 적용되는 시스템 변수의 경우 글로벌 변수뿐만 아니라 세션 변수에도 동시에 존재한다.
글로벌 변수
- 하나의 MySQL 서버 인스턴스에서 전체적으로 영향을 미치는 시스템 변수를 의미한다.
- 주로 MySQL 서버 자체에 관련된 설정일 때가 많다.
- 예) InnoDB 버퍼 풀 크기(innodb_buffer_pool_size) 또는 MyISAM의 키 캐시 크기(key_buffer_size)
세션 변수
- MySQL 클라이언트가 MySQL 서버에 접속할 때 기본으로 부여하는 옵션의 기본값을 제어하는데 사용된다.
- 각 클라이언트가 처음에 접속하면 기본적으로 부여하는 기본값을 가지고 있다, 별도로 그 값을 변경하지 않은 경우에는 그대로 값이 유지되지만, 클라이언트의 필요에 따라 개별 커넥션 단위로 다른 값으로 변경할 수 있는 것이 세션 변수이다. (여기서 기본 값은 글로벌 시스템 변수이고, 각 클라이언트가 가지는 값이 세션 시스템 변수이다.)
- 예) 각 클라이언트에서 쿼리 단위로 자동 커밋을 수행할지 여부를 결정하는 autocommit 변수
정적 변수와 동적 변수
디스크에 저장된 설정 파일의 내용은 변경하더라도 MySQL 서버가 재시작하기 전에는 적용되지 않는다. 하지만 SHOW 명령으로 MySQL 서버에 적용된 변수값을 확인하거나 SET 명령을 이용해 값을 바꿀 수도 있다. 만약 변수명을 정확히 모른다면 SQL 문장의 LIKE 처럼 SHOW 명령에서 % 문자를 이용해 패턴 검색을 하는 것도 가능하다.
하지만 SET 명령을 통해 변경되는 시스템 변수값이 MySQL의 설정 파일인 my.cnf 파일에 반영되는 것은 아님에 주의하자. 현재 기동 중인 MySQL의 인스턴스에만 유효하다. MySQL 서버가 재시작하면 다시 설정 파일의 내용으로 초기화되기 때문에 설정을 영구히 적용하려면 my.cnf 파일도 반드시 변경해야 한다.
MySQL 8.0 버전부터는 SET PERSIST 명령을 이용하면 실행 중인 MySQL 서버의 시스템 변수를 변경함과 동시에 자동으로 설정 파일로도 기록 된다.
SHOW 또는 SET 명령에서 GLOBAL 키워드를 사용하면 글로벌 시스템 변수의 목록과 내용을 읽고 변경할 수 있으며, GLOBAL 키워드를 빼면 자동으로 세션 변수를 조회 및 변경한다. (디폴트는 세션 변수임을 알아두자.)
SET GLOBAL max_connections=5000;
SET PERSIST max_connections=5000;
- 위와 같이 PERSIST 를 붙이면 설정파일까지 수정된것을 확인 할수 있었다.
My.cnf 파일
MySQL 서버의 시스템 변수는 대략 570개 수준이며, 사용하는 플러그인이나 컴포넌트에 따라 시스템 변수의 개수는 더 늘어날 수도 있다.
필요에 따라 My.cnf 파일의 변수를 설정하여 조절해야 할것 같다.
'DB' 카테고리의 다른 글
MySQL 엔진 아키텍처 (1) | 2024.08.03 |
---|---|
MySQL 사용자 및 권한 (0) | 2024.07.26 |
쿼리 실행 구조 (MySQL 엔진) (0) | 2023.12.27 |
PostgreSQL만의 함수 to_tsvector(), to_tsquery() (0) | 2023.09.07 |
PostgreSQL vs MySQL (0) | 2023.09.03 |