RealMySQL 8.0을 읽고 정리했습니다.
DBMS Variables 비교 페이지를 만들 때 글로벌인지 세션인지 대해서 구분할 일도 있고 했는데,,
이번 기회에 정리해보고자 한다.
MySQL의 시스템 변수는 적용 범위에 따라 글로벌 변수와 세션 변수로 나뉜다.
글로벌 변수
- MySQL 서버 인스턴스에서 전체적으로 영향을 미치는 시스템 변수
- MySQL 서버 자체에 관련된 설정일 때가 많음
- MySQL 서버에서 단 하나만 존재
- innodb_buffer_pool_size : InnoDB 버퍼 풀 크기
- key_buffer_size : MyISAM의 키 캐시 크기
세션 변수
- MySQL 클라이언트가 MySQL 서버에 접속할 때 기본으로 부여하는 옵션의 기본값을 제어하는 데 사용
- 클라이언트의 필요에 따라 개별 커넥션 단위로 다른 값으로 변경할 수 있는 것
- 기본 값: 글로벌 변수 / 각 클라이언트가 가지는 값: 세션 변수
- autocommit: 각 클라이언트에서 쿼리 단위로 자동 커밋 수행 여부 결정
- 커넥션별로 설정값을 서로 다르기 지정, 한번 연결된 커넥션의 세션 변수는 서버에서 강제로 변경할 수 없음
- 세션 변수 중 my.cnf에 명시해 초기화할 수 있는 변수 → var scope가 대부분 Both
- MySQL 서버가 기억만 하고 있다가 실제 클라이언트와의 커넥션이 생성되는 순간에 해당 커넥션의 기본값으로 사용되는 값
- 순수하게 Session 범위인 시스템 변수는 my.cnf에 초기값을 명시할 수 없음, 커넥션이 만들어지는 순간부터 해당 커넥션에만 유효한 설정 변수임