2013-01-18 3 views
1

한 컴퓨터에서 실행하는 데 7 초가 걸리는 SQL 쿼리가 있지만 다른 컴퓨터 (동일한 하드웨어, 데이터베이스가 mysqldump와 함께 복사되므로 동일 함)에서 동일한 쿼리가 실행됩니다. 2000 초 이상.느린 mysql을 디버그하는 방법

이것이 이유는 무엇입니까? 느린 mysql을 디버깅하는 방법에 대한 온라인에서 찾을 수있는 모든 조언은 '느린 쿼리 찾기'로 끝나고있는 것 같습니다. 그건 내가 여기서 도움이되지 않아. Show processlist는 실행중인 다른 쿼리를 보여주지 않으므로 왜 한 컴퓨터에서 다른 쿼리보다 수백 배 더 오래 실행하는 이유는 무엇입니까?

+2

'EXPLAIN'을 사용해 보셨습니까? http://dev.mysql.com/doc/refman/5.1/en/using-explain.html? –

+1

'EXPLAIN'을 사용하여 쿼리를 디버깅 할 수 있습니다. MySQL의 실행은 일반적인 요소에 따라 다릅니다. 1) 램 메모리. 2) 시스템로드. 3) 디스크 사용. 4) CPU 코어 없음. 등. – kannanrbk

+0

느린 쿼리를 디버깅하려면 설명을 사용할 수 있지만 문제는 쿼리가 느린 것이 아니라 한 컴퓨터에서는 느리고 다른 컴퓨터에서는 느리다는 것입니다. – Benubird

답변

0

내가 알기로는 SQL Server가 두 조건이 동일하다는 것입니다. 당신은 쿼리 x가 client1에서 실행될 때 몇 초가 걸린다 고 말합니다. 다른 클라이언트 client2에서는 2000 초 이상 걸립니다.

client2와 데이터베이스 서버 사이의 네트워크에 문제가 있다고 느낍니다. 이 두 서버간에 ping을 시도하십시오. 그것은 당신에게 어떤 힌트를 주어야합니다. 이 이론은 또한 서버가 쿼리가 실행되는 것을 보여주지 않는다고 언급했기 때문에 지원됩니다.

두 조건 모두 SQL Server가 다른 경우; 인덱스 등은 동일합니다; 문제는 오랜 시간 이래로 client2에서 ANALYZE가 실행되지 않았다는 것입니다.

+0

데이터베이스는 로컬 서버이며 외부 서버는 아닙니다. 죄송합니다 그 질문에서 분명 아니었다. ANALYZE가 최근에 실행되었습니다. 서버가 LEFT JOIN 테이블 중 하나가 비어 있는지 여부에 따라 '실행 중'또는 '데이터 전송 중'에 걸려있는이 쿼리를 표시하고 있습니다. – Benubird