[AWS] Mysql 시스템 변수

ysk1230·2023년 12월 18일

Mysql(Linux) IN AWS

목록 보기
7/8

1. 시스템 변수 확인

mysql> show global variables

mysql> show global variables LIKE '연관검색기능%'

  • 예시
    mysql> show global variables like 'admin_port%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | admin_port | 33062 |
    +---------------+-------+
    1 row in set (0.01 sec)

2. 글로벌 변수와 세션 변수

MySQL에서 글로벌 변수와 세션(또는 시스템) 변수는 서버 동작을 제어하는 설정 값들이지만, 적용 범위에 있어서 차이가 있습니다.

글로벌 변수

  • 정의: 글로벌 변수는 MySQL 서버 전체에 영향을 미치는 설정입니다. 이러한 변수는 서버의 모든 세션과 연결에 적용됩니다.
  • 사용 예: 예를 들어, max_connections 글로벌 변수는 서버가 허용하는 최대 동시 연결 수를 설정합니다. 이 변수를 변경하면 MySQL 서버에 연결할 수 있는 클라이언트 수의 상한이 변경됩니다.
  • 조회 및 설정 방법: SHOW GLOBAL VARIABLES 명령으로 조회하고, SET GLOBAL variable_name = value; 형식으로 설정합니다.

세션(시스템) 변수

  • 정의: 세션 변수는 현재 MySQL 세션 또는 연결에만 적용되는 설정입니다. 각 클라이언트 세션은 자신만의 세션 변수 값을 가집니다.
  • 사용 예: 예를 들어, sql_mode 세션 변수는 현재 세션의 SQL 모드를 설정합니다. 이를 변경하면 해당 세션에서의 SQL 쿼리 처리 방식이 변경되지만, 다른 세션에는 영향을 미치지 않습니다.
  • 조회 및 설정 방법: SHOW VARIABLES 또는 SHOW SESSION VARIABLES 명령으로 조회하고, SET variable_name = value; 형식으로 설정합니다.

예시

  • 글로벌 변수 조회 및 설정 예시:

    -- 글로벌 변수 조회
    SHOW GLOBAL VARIABLES LIKE 'max_connections';
    
    -- 글로벌 변수 설정 (예: 최대 연결 수 변경)
    SET GLOBAL max_connections = 200;
  • 세션 변수 조회 및 설정 예시:

    -- 세션 변수 조회
    SHOW VARIABLES LIKE 'sql_mode';
    
    -- 세션 변수 설정 (예: SQL 모드 변경)
    SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER';

이러한 차이점은 MySQL 서버의 관리와 최적화에 중요합니다. 글로벌 변수를 변경하면 모든 사용자와 세션에 영향을 미치므로, 시스템의 전반적인 성능과 안정성에 중대한 영향을 줄 수 있습니다. 반면, 세션 변수는 특정 사용자의 연결이나 작업에만 영향을 미쳐서, 개별 세션의 동작을 미세 조정하는 데 유용합니다.

3. 정적변수와 동적변수

MySQL에서 "정적 변수"와 "동적 변수"는 변수의 설정 변경 가능 여부와 적용 시점에 따라 구분됩니다.

정적 변수 (Static Variables)

  • 정의: 정적 변수는 MySQL 서버가 시작될 때만 설정될 수 있는 변수입니다. 서버가 실행 중일 때 이러한 변수의 값을 변경할 수 없습니다.
  • 적용 방법: 이 변수들의 값은 보통 my.cnf (또는 my.ini 등) 설정 파일에서 설정됩니다. 서버를 재시작해야 새로운 값이 적용됩니다.
  • 사용 예: 예를 들어, innodb_buffer_pool_size는 InnoDB 버퍼 풀의 크기를 설정하는 정적 변수입니다. 이 값을 변경하려면 설정 파일을 편집한 후 MySQL 서버를 재시작해야 합니다.
  • 조회 방법: SHOW VARIABLES 명령을 사용하여 조회할 수 있습니다.

동적 변수 (Dynamic Variables)

  • 정의: 동적 변수는 MySQL 서버가 실행 중일 때도 변경할 수 있는 변수입니다. 이러한 변수들은 즉시 또는 다음 세션부터 적용될 수 있습니다.
  • 적용 방법: 이 변수들은 SET 명령을 사용하여 실행 중인 MySQL 서버에서 직접 변경할 수 있습니다.
  • 사용 예: max_connections는 서버가 허용하는 최대 동시 연결 수를 결정하는 동적 변수입니다. 이 변수는 서버가 실행 중일 때 변경할 수 있으며, 변경 후 즉시 적용됩니다.
  • 조회 및 설정 방법: SHOW VARIABLES 명령으로 조회하고, SET GLOBAL 또는 SET SESSION 명령으로 설정할 수 있습니다.

예시

  • 정적 변수 조회 및 설정 예시:

    -- 정적 변수 조회
    SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
    
    -- 정적 변수 설정 (서버 재시작 필요)
    -- my.cnf 파일 편집 필요
    innodb_buffer_pool_size = 1G
  • 동적 변수 조회 및 설정 예시:

    -- 동적 변수 조회
    SHOW VARIABLES LIKE 'max_connections';
    
    -- 동적 변수 설정 (서버 재시작 없이 적용)
    SET GLOBAL max_connections = 200;

정적 변수는 주로 서버의 핵심 성능과 관련된 설정에 사용되며, 변경 시 주의가 필요합니다. 동적 변수는 보다 유연하게 서버의 운영을 조절할 수 있게 해주며, 서버의 상태에 따라 적절히 조정할 수 있습니다.

0개의 댓글