23.8.16 자동 재 연결 동작 제어
실행되는 문을 서버에 보내려고 할 때, MySQL 클라이언트 라이브러리가 연결이 중단 된 것을 감지하면, 그것은 서버에 자동 재 연결을 실행할 수 있습니다. 자동 재 연결이 활성화되어있는 경우 라이브러리는 1 번 서버에 다시 연결하고 문을 다시 보내려고합니다.
MySQL 5.6에서는 자동 재 연결은 기본적으로 비활성화되어 있습니다.
응용 프로그램에서 연결이 끊어진 것을 아는 것이 중요 경우 (상태 정보의 손실에 따라 종료하거나 조치를 취하거나 할 수 있도록) 자동 재 연결이 해제되도록하십시오. 이를 보장하려면 MYSQL_OPT_RECONNECT
옵션을 사용하여 mysql_options()
를 호출합니다.
my_bool reconnect = 0; mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect);
연결이 중지 된 경우 mysql_ping()
의 효과는 자동 재 연결 상태에 따라 다릅니다. 자동 재 연결이 활성화되어있는 경우 mysql_ping()
는 다시 연결을 수행합니다. 그렇지 않은 경우, 그것은 오류를 반환합니다.
일부 클라이언트 프로그램은 자동 다시 연결을 제어하는 기능을 제공합니다. 예를 들어, mysql은 기본적으로 다시 연결하지만, --skip-reconnect
옵션을 사용하여이 동작을 방지 할 수 있습니다.
자동 재 연결이 이루어진 경우 (예를 들어, mysql_ping()
의 호출의 결과로서) 그 명시적인 징후는 없습니다. 다시 연결을 확인하려면 mysql_ping()
를 호출하기 전에 mysql_thread_id()
를 호출하여 원래의 연결 식별자를 취득하고 나서 다시 mysql_thread_id()
를 호출하여 식별자가 변경되어 있는지 확인 합니다.
자동 재 연결은 자신의 다시 연결 코드를 구현할 필요가 없기 때문에 편리 할 수도 있지만, 다시 접속을하는 경우 서버 측에서 접속 상태의 몇 가지 측면이 리셋되어 응용 프로그램에 알립니다 없습니다.
연결 관련 상태는 다음과 같이 영향을받습니다.
활성 트랜잭션이 롤백되고 자동 위탁 모드가 재설정됩니다.
모든 테이블 잠금이 해제됩니다.
모든
TEMPORARY
테이블이 닫혀 (또한 삭제)됩니다.세션 시스템 변수는
SET NAMES
등의 문에서 암시 적으로 설정되는 시스템 변수를 포함한 해당 글로벌 시스템 변수의 값으로 다시 초기화됩니다.사용자 변수 설정이 손실됩니다.
준비된 문이 출시됩니다.
HANDLER
변수가 닫힙니다.LAST_INSERT_ID()
의 값이 0으로 재설정됩니다.GET_LOCK()
에 의해 취득 된 잠금이 해제됩니다.연결 스레드 계측을 판단하는 성능 스키마
threads
테이블 행과 클라이언트의 연결이 끊어집니다. 클라이언트가 절단 후 다시 연결하면 세션은threads
테이블에 새 행에 연결되므로 스레드 모니터링 상태가 다를 수 있습니다. 섹션 22.9.10.3 "스레드 테이블" 을 참조하십시오.
연결이 끊어진 경우 서버에서 클라이언트가 연결되지 않는 것을 감지하지 않는 경우 서버 측에서 그 연결에 연관된 세션이 계속 실행할 수 있습니다. 이 경우 원래의 연결에 의해 보유 된 잠금은 아직 그 세션에 속해 있기 때문에 mysql_kill()
를 호출 해, 그것을 강제 종료해야있을 수 있습니다.