2009-12-09 1 views
0

MySQL 데이터베이스가 읽기 잠금 상태 인 것을 감지하고 오류 메시지를 표시해야하는 PHP 응용 프로그램을 가져와야합니다. 쉽게,하지만 쿼리가 잠금 해제 대기중인 것처럼 시스템이 멈추지 않고 현재 잠금 상태를 확인하기 위해 실행할 수있는 모든 MySQL 명령이 있습니까?MySQL 테이블이 읽기 잠금 상태 일 때 (PHP에서)

건배,

Johnathon은

편집 : 데이터베이스가 DBA에 의해 readlock하는 듯했지만 우리의 클라이언트가 자동으로이 suituation를 처리하는 응용 프로그램을 원하고 있습니다 ... 내가가는 동안 아무 것도 발견되지했습니다 따라서 전문가에게 물어보십시오 :-)

답변

1

워드 프로세서를 확인한 후 PHP의 MySQL의 C API를 통해이 일을하는 방법이있을 나타나지 않습니다

당신은 INNDOB와 엔진 이름을 교체 "SHOW 엔진 [EngineName] 상태"를 실행하여 교착 상태 감지 검토 할 수 있습니다, MyISAM 또는 잠긴 테이블이 실행중인 엔진.

또한

사람들은 SHOW 잠금을 요청한 명령 줄에서 "mysqladmin 데이터 디버그"를 실행하여 잠금 정보를 얻을 수는 명령하지만 아직 존재 나던 그것.

이것은 내가 문서에서 설정할 수있는 전부입니다. 다른 사람이이 솔루션을 사용하기를 바랍니다. 매우 유용 할 수 있습니다.

+0

나는 그것이 늦었다는 것을 알고 있지만, 답장을 보내 주셔서 감사합니다! :) – Kirrus

+0

기꺼이 도와 드리겠습니다. 나는이 답변을 완전히 잊었다 :) –

2

PHP 스크립트는 MySQL 서버의 응답을 기다리고 있으므로 실행 된 쿼리가 어떤 상태인지 확인하기가 어려울 수 있습니다. 쿼리에서 읽기 잠금에 문제가있는 경우 문제 해결과 스크립트가 멈추는 지점에 쿼리가 잠기는 이유를 조사하는 것이 좋습니다. 일부 스케치 핸들러를 함께 사용하는 것보다 왜냐하면 잠긴 쿼리는 심각한 근본적인 문제를 나타낼 수 있기 때문입니다.

성능 향상에 도움이되도록 MySQL 서버의 시작 변수를 조정하는 방법에 대한 지침은 MySQL 설명서 및 mysql 성능 블로그를 참조하십시오. 또한 관리되는 방식으로 PHP 세션을주의 깊게 사용하고 있는지 확인하십시오. 단일 사용자로부터 서버에 동시에 비동기 요청이 많이 발생하는 경우 세션 파일이 여러 스레드에서 잠겨서 PHP가 중단 될 수 있으므로 데이터베이스를 만듭니다 쿼리가 응답하지 않습니다. 이것은 우리가 마주 친 심각한 문제입니다.

잠긴 쿼리는 문제를 해결하기가 매우 어려울 수 있지만 가장 좋은 방법은 잠긴 이유 및 근본 원인을 근본 원인을 조사하는 것입니다. SHOW FULL PROCESSLIST 실행 중; 데이터베이스에 열려있는 모든 연결 목록을 제공하고 이후 쿼리를 잠그고있는 느리게 실행되는 쿼리를 식별하는 데 도움이되는 정보를 제공 할 수 있습니다.

희망은 도움이됩니다. 행운을 비네.

+0

죄송합니다. DBA가 유지 관리하는 동안 새 업데이트에서 데이터베이스를 잠그므로 쿼리가 잠겨 있습니다.그러나 클라이언트가 자동으로 감지하고 테이블이 잠겨있을 때 오류 메시지를 던질 수 있도록 자신의 애플 리케이션을 원한다면 ... – Kirrus

0

앱이 해당 데이터베이스에 액세스하고 잠재적으로 잠그는 경우라면 데이터베이스에 액세스하기 전에 GET_LOCKRELEASE_LOCK mysql 함수를 사용할 수 있습니다.

잠김 상태를 제어 할 수 없다면 나보다 더 현명한 사람들에게 연기해야 ​​할 것입니다.

관련 문제