CleverCode의 한 동료가 최근 MySQL에서 SQL 문장을 분석하는 도구인 프로파일링을 추천했는데, 이 도구는 쿼리 과정에서 SQL 문장에 소요된 구체적인 시간을 정확히 분석할 수 있어 매우 유용하다는 것을 알게 되었습니다. CleverCode가 여기서 요약해 공유합니다.
1 소개
MySQL의 쿼리 프로파일러는 매우 편리한 쿼리 진단 분석 도구로, 쿼리 실행 과정에서 CPU, IO, IPC, SWAP 등 여러 자원의 소비 현황, 페이지 폴트, 컨텍스트 스위치 등의 발생 여부, 그리고 쿼리 실행 중 MySQL 호출된 각 함수의 위치를 파악할 수 있습니다.
MySQL 버전 5.0.37 이상은 PROFILING 디버깅 기능을 지원하여 SQL 문이 소비하는 자원의 세부 사항을 이해할 수 있게 합니다. 시스템의 getrusage() 함수를 호출해야 하기 때문에 Windows에서는 사용할 수 없고 Linux/Unix 클래스 플랫폼에서만 사용할 수 있습니다. 또한 PROPROFILE은 스레드가 아닌 프로세스를 처리하는 데 쓰이고, 서버의 다른 애플리케이션이 디버깅 결과에 영향을 줄 수 있으므로 개발 중 디버깅에 적합하며, 운영 환경에서 디버깅을 원한다면 그 한계를 주의해야 합니다.
2 운영
2.1 프로필이 활성화되어 있는지 확인하세요. 기본적으로 꺼져 있습니다.
2.2 프로파일링 활성화. 변수 프로파일링은 매번 다시 활성화해야 하는 사용자 변수입니다.
2.3 다음 문장을 실행하세요: QCACHE에 이전에 SQL을 저장하지 않으려면, SQL 실행 시 SELECT 문이 QCACHE 감지를 수행하지 않도록 강제로 하는 것이 권장됩니다. 이를 통해 분석의 정확성을 제출할 수 있습니다.
2.4 사용프로필 쿼리가장 최근의 작품명제의 실행 정보。 (분석: 20세> system_user 중에서 sql_no_cache 개수(*)를 선택)
2.5 쇼 프로필 사용. 서버에서 실행되는 문장 목록을 확인하세요. (쿼리 ID, 소요 시간, 문장).
2.6 show 프로필을 사용하여 공식 ID의 실행 정보를 조회합니다. 여기서는 ID 6으로 이 명제를 분석합니다. (분석: 20세> system_user 중에서 sql_no_cache 개수(*)를 선택).
2.7 CPU 및 블록 IO 소비 처리.
2.8 추가 정보 획득. "SHOW PROFILE *** FOR QUERY n"을 수행하면 얻을 수 있습니다. 참조 주소: http://dev.mysql.com/doc/refman/5.6/en/show-profile.html.
|