MySQL 서버의 시스템 변수는 MySQL 서버가 기동중인 상태에서 변경 가능한지에 따라 동적 변수와 정적 변수로 구분된다.
MySQL에서 정적 변수와 동적 변수는 둘 다 서버 변수(server variables)라고도 불리며, MySQL 서버의 동작을 제어하는 데 사용됩니다. 그러나 그들은 서로 다른 특성을 가지고 있습니다.
정적 변수(Static variables)는 MySQL 서버가 시작될 때 설정되고, 서버가 종료될 때까지 유지됩니다. 이러한 변수는 my.cnf 파일에서 설정할 수 있으며, 이 파일은 MySQL 서버의 구성 파일입니다. 예를 들어, max_connections 변수는 서버에 연결할 수 있는 최대 클라이언트 연결 수를 제한합니다. 이 값을 변경하려면 my.cnf 파일에서 max_connections=100과 같이 값을 수정하면 됩니다.
동적 변수(Dynamic variables)는 MySQL 서버가 실행 중일 때 설정되며, 변경할 수 있습니다. 이러한 변수는 SET 명령을 사용하여 설정할 수 있습니다. 예를 들어, sort_buffer_size 변수는 MySQL 서버가 실행되는 동안 정렬 작업에 사용되는 버퍼의 크기를 제어합니다. 이 값을 변경하려면 SET sort_buffer_size=256M과 같이 명령을 실행하면 됩니다.
시스템 변수의 범위가 ‘Both’인 경우(글로벌이면서 세션 변수인)에는 글로벌 시스템 변수의 값을 변경해도 이미 존재하는 커넥션의 세션 변숫값은 변경되지 않고 그대로 유지된다.
따라서, 정적 변수와 동적 변수는 MySQL 서버의 동작을 제어하는 데 사용되는 두 가지 서버 변수입니다. 그러나 정적 변수는 서버가 시작될 때 설정되고, 서버가 종료될 때까지 유지되는 반면, 동적 변수는 MySQL 서버가 실행 중일 때 설정되며 변경할 수 있습니다.
MySQL SET PERSIST 명령은 시스템을 다시 시작한 후에도 지속되도록 시스템 변수 또는 구성 파일의 옵션 값을 저장하는 데 사용됩니다. 이는 MySQL 서버가 중지되었다가 다시 시작되더라도 SET PERSIST를 사용하여 설정된 값이 세션 간에 유지됨을 의미합니다.
예를 들어 SET PERSIST max_connections = 100 명령을 사용하면 max_connections 값이 100으로 설정되고 이 값은 서버 재시작 후에도 유지되도록 구성 파일에 저장됩니다. 이는 서버를 다시 시작할 때마다 설정하지 않고 특정 옵션이나 시스템 변수를 영구적으로 구성하려는 상황에서 유용할 수 있습니다.
SET PERSIST 명령은 현재 세션에만 영향을 미치고 이 명령을 사용하여 설정한 값은 다른 세션이나 MySQL 서버에 대한 연결에 영향을 미치지 않는다는 점에 유의해야 합니다. 또한 일부 시스템 변수 및 옵션은 SET PERSIST를 사용하여 설정하지 못할 수 있으므로 MySQL 설명서를 참조하여 특정 옵션을 이러한 방식으로 구성할 수 있는지 확인하는 것이 중요합니다.
다음은 몇 가지 사용 예와 그 결과입니다.
예 1 - SET PERSIST를 사용하여 max_connections 시스템 변수 설정:
SET PERSIST max_connections = 200;
이렇게 하면 max_connections 시스템 변수가 200으로 설정되고 이 값이 구성 파일에 저장되어 시스템을 다시 시작한 후에도 지속됩니다. MySQL 서버에 대한 모든 새 연결은 최대 200개의 동시 연결로 제한됩니다.
예 2 - SET PERSIST를 사용하여 느린 쿼리 로그 활성화
SET PERSIST slow_query_log = 1;
그러면 MySQL에서 느린 쿼리 로그가 활성화되고 이 구성이 구성 파일에 저장되어 시스템을 다시 시작한 후에도 지속됩니다. 구성된 실행 시간보다 오래 걸리는 쿼리는 느린 쿼리 로그에 기록됩니다.
예시 3 - SET PERSIST를 사용하여 바이너리 로깅 비활성화:
SET PERSIST log_bin = 0;
이렇게 하면 MySQL에서 이진 로깅이 비활성화되고 이 구성이 구성 파일에 저장되어 시스템을 다시 시작한 후에도 지속됩니다. 바이너리 로깅은 데이터베이스에 대한 변경 사항을 기록하는 데 사용되지만 비활성화하면 경우에 따라 디스크 사용량을 줄이고 성능을 향상시킬 수 있습니다.
이 모든 예에서 SET PERSIST 명령은 시스템 변수 또는 옵션을 설정하고 구성 파일에 저장하여 시스템을 다시 시작한 후에도 지속되도록 하는 데 사용됩니다. 이는 세션 간에 유지되어야 하는 특정 방식으로 MySQL을 구성하려는 상황에서 유용할 수 있습니다.
'SET PERSIST_ONLY' 명령은 시스템 변수 또는 옵션의 값을 구성 파일에 저장하여 시스템을 다시 시작한 후에도 지속되도록 한다는 점에서 'SET PERSIST' 명령과 유사합니다. 그러나 두 명령 사이에는 한 가지 중요한 차이점이 있습니다.
SET PERSIST 명령을 사용하면 시스템 변수 또는 옵션의 값이 현재 세션에 설정되고 구성 파일에 저장됩니다. 이는 새 값이 현재 세션뿐 아니라 나중에 시작될 수 있는 모든 후속 세션에 적용됨을 의미합니다.
반면 'SET PERSIST_ONLY' 명령을 사용하면 시스템 변수나 옵션의 값이 설정 파일에만 저장된다. 현재 세션은 영향을 받지 않으며 새 값은 MySQL 서버를 다시 시작할 때만 적용됩니다.
차이점을 설명하는 데 도움이 되는 예는 다음과 같습니다.
SET PERSIST max_connections = 100; SET PERSIST_ONLY slow_query_log = 1;
이 예에서 첫 번째 명령은 max_connections 변수를 100으로 설정하고 SET PERSIST를 사용하여 구성 파일에 저장합니다. 두 번째 명령은 SET PERSIST_ONLY를 사용하여 slow_query_log 변수를 1로 설정하지만 현재 세션에만 적용됩니다. MySQL 서버가 다시 시작되면 max_connections 값은 100으로 설정되고 slow_query_log 값은 0(또는 기본값)으로 설정됩니다. SET PERSIST_ONLY 명령은 구성 파일에 영향을 미치지 않기 때문입니다. .
요약하면 'SET PERSIST_ONLY' 명령을 사용하면 현재 세션에 영향을 주지 않고 구성 파일의 시스템 변수 또는 옵션 값을 저장할 수 있는 반면, 'SET PERSIST' 명령은 현재 세션에 대한 값을 설정하고 저장합니다. 구성 파일에서.
my.cnf 파일은 서버의 동작을 제어하는 설정 및 옵션을 저장하기 위해 MySQL 데이터베이스 서버에서 사용하는 구성 파일입니다. 텍스트 편집기를 사용하여 편집할 수 있는 일반 텍스트 파일입니다.
my.cnf 파일은 일반적으로 MySQL 설치 디렉터리에 있으며 다양한 구성 옵션을 포함할 수 있습니다. 다음은 파일에 포함될 수 있는 가장 일반적인 옵션 중 일부입니다.
my.cnf 파일은 시작할 때 MySQL 서버에서 읽으므로 서버를 다시 시작할 때까지 파일에 대한 변경 사항이 적용되지 않는다는 점에 유의하는 것이 중요합니다. 또한 일부 옵션은 my.cnf 파일에서 설정할 수 없으며 MySQL 명령줄 클라이언트에서 SET 명령을 사용하여 설정해야 할 수 있습니다.
전반적으로 'my.cnf' 파일은 MySQL 데이터베이스 서버의 동작을 구성하고 사용자 지정하는 데 중요한 도구이며 특정 애플리케이션이나 사용 사례의 요구 사항을 충족하도록 서버를 미세 조정하는 데 사용할 수 있습니다.