MySQL에서 클라이언트 사용자 변수는 영구적으로 유지될 수 없습니다
MySQL에서는 클라이언트가 사용자 정의 변수(user-defined variable)를 영구적으로 보유하는 것이 불가능합니다. 그 이유는 MySQL의 사용자 변수가 세션(session) 범위로 동작하기 때문입니다.
사용자 변수가 사라지는 이유
MySQL에서 사용자 변수는 다음과 같이 특정 클라이언트 연결(세션)에 종속됩니다.
SET @my_var = 100;
이렇게 선언한 변수는 해당 연결이 살아 있는 동안에만 유효하며, 클라이언트가 연결을 종료하는 순간 그 세션에 할당되었던 모든 변수는 자동으로 해제됩니다. 따라서 새로운 세션에서는 이전 세션에서 정의한 변수 값을 전혀 사용할 수 없습니다.
영구적인 값 저장이 필요하다면?
여러 세션에서 공유하거나 서버 재시작 후에도 유지해야 하는 값이라면 사용자 변수 대신 다음과 같은 방법을 고려해야 합니다.
- 테이블에 저장: 값을 데이터베이스 테이블에 저장하면 모든 세션에서 조회하고 지속적으로 관리할 수 있습니다.
- 시스템 변수 활용: 서버 전역 설정이 필요한 경우 my.cnf(또는 my.ini) 설정 파일에 시스템 변수를 정의하여 서버 시작 시마다 적용되도록 할 수 있습니다.
정리
MySQL의 사용자 변수(@로 시작하는 변수)는 본질적으로 임시적이며 세션에 한정됩니다. 클라이언트 연결이 종료되면 자동으로 해제되기 때문에 영구 보관 목적으로는 적합하지 않으며, 지속성이 필요한 데이터는 반드시 테이블이나 시스템 설정을 통해 관리해야 합니다.