실제 MySQL 쿼리 시간 측정


79

잠금 해제 등을 기다리는 데 걸리는 시간을 측정하지 않고 쿼리 실행 시간을 측정하려면 어떻게해야합니까? 내 유일한 아이디어는 동일한 쿼리를 지속적으로 측정하고 가장 빠른 시간을 기록하는 것입니다.

답변:


149

다음으로 프로파일 러 시작

SET profiling = 1;

그런 다음 쿼리를 실행하십시오.

SHOW PROFILES;

프로파일 러에 통계가있는 쿼리 목록이 표시됩니다. 마지막으로 검사 할 쿼리를 선택합니다.

SHOW PROFILE FOR QUERY 1;

또는 귀하의 쿼리에있는 숫자.

당신이 얻는 것은 정확히 쿼리하는 동안 얼마나 많은 시간이 소요되었는지 목록입니다.

매뉴얼에 더 많은 정보가 있습니다.


이것은 훌륭합니다! 이것이 느린 지 아십니까? 즉, 내 웹 사이트에서 실행되는 모든 쿼리에 대해 실행하기 위해 내 래퍼 클래스에 추가 할 수 있습니까?
Mikhail

3
그것에 대해 생각하지 않았습니다. 왜 그렇게 하시겠습니까? 보통 이것은 개발을위한 것입니다. 어떤 쿼리가 느린 지 알고 싶다면 느린 쿼리 로그를 살펴보십시오. dev.mysql.com/doc/refman/5.1/en/slow-query-log.html
fancyPants

쿼리는 사용자마다 다른 시간이 걸리기 때문입니다. slow-query-log는 잠금 해제를 기다리는 시간을 계산하는 것 같습니다
Mikhail

1
사실이 아닙니다. 잠금을 기다리는 것은 다른 쿼리가 느려지는 현상 일뿐입니다. 느린 쿼리 로그에서 쿼리를 선택하고 프로파일 러로 실행하여 많은 시간을 보낸 곳을 확인하는 것이 좋습니다. 그런 다음 가능하면 개선하십시오. 그에 따라 인덱스를 추가하거나 다시 쓰거나 쿼리가에 많은 시간을 소비하는 경우 데이터 읽기를 줄입니다 sending data. 또는 성능 향상을 위해 필요한 모든 것. 사용자에게 왜 그렇게 오래 기다려야하는지 알리는 데 아무런 의미가 없습니다. 그들은 실제로 상관하지 않습니다.
fancyPants

프로파일 링 결과를 사용자에게 표시하려는 것이 아닙니다. 나는 단지 그것을 라이브로 캡처하고 내 목적을 위해 저장하고 싶었다
Mikhail

37

수락 된 답변이 무효화됩니다 ...

SHOW PROFILE[S]하는 MySQL은 5.6.7 추천되지 않으며 향후 MySQL의 릴리스에서 제거 될 것입니다. 대신 성능 스키마를 사용하십시오. 참조 http://dev.mysql.com/doc/refman/5.6/en/performance-schema-query-profiling.html를


2
프로필이 "데이터 전송"보다 더 유용한 정보를 제공하면 복권에 당첨됩니다.
릭 제임스

1
나는 5.7.19 여전히 사용하고 show profiles제대로 일을
시바 프라 빈

1
@SivaPraveen - 확인, 지금은 여전히 "... ... 제거 될 것"작동하지만,
릭 제임스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.