2008-09-24 2 views
8

상당히 복잡한 웹 사이트 (PHP 기반)에서 MySQL을 사용합니다.쿼리 및 인덱스 설정을 최적화하는 데 유용한 MySQL 도구가 있습니까?

필자가 사용하고있는 SQL 쿼리를 테스트하고 성능을 향상시키고 테이블 스캔을 피하는 더 나은 테이블 인덱스를 제안 할 수있는 도구를 사용하는 것이 이상적입니다.

오류가 발생하면 각 쿼리의 정확성을 알 수 있으므로 직접 최적화를 수행 할 수 있습니다.

편집 : EXPLAIN의 출력을 이해하는 간단한 가이드가 유용 할 것입니다.

감사합니다.

답변

18

제 대답 전에 MySQL Performance Blog에 가입하여 많은 것을 배웠습니다. (그리고 나는 이미 MySQL에 관해 많은 것을 알고있었습니다). 또한, 그는 bitchin 'tools 페이지 here을 가지고 있습니다.

둘째 오프, 여기에 몇 가지 정보에 대한 EXPLAIN의 (오라일리에서 고성능 MySQL의 책 참조) :

것은 당신이 쿼리에 EXPLAIN 실행, 그것은에서 해당 쿼리에 대해 당신에게 MySQL이 알고있는 모든 것을 알려줍니다 쿼리와 관련된 각 테이블에 대한 보고서 형식 그것의 경우

이 보고서의 각은 당신을 말할 것이다

은 ...

  • (쿼리) 테이블의 ID 더 큰 선택의
  • 테이블의 역할 (해당되는 경우, 단순한 말할 수있다 하나 개의 테이블)
  • 테이블의 이름 (대만족)
  • 조인 유형 (해당되는 경우, const를)
  • a를 테이블에 인덱스의 목록 (또는 NULL 경우 기본값 없음), 이 possible_keys
  • MySQL을 사용하기로 결정 인덱스의 이름,
  • () 바이트 키의 값의 크기가
  • REF 일치하도록 사용 COLS 또는 값을 나타낸다 키에 대해
  • 은 쿼리를 만족시키기 위해 MySQL이 검토해야한다고 생각하는 행 수입니다. 가능한 한 계산 된 최소값에 가깝게 유지해야합니다!
  • 은 ... 다음 여분의 정보 MySQL은

이 책은이 같은 정보를 제공하는 완전히 끝내 전달하고자하는, 그래서 당신이 이미하지 않은 경우, 구매에 떨어져 서명하는 상사를 얻을.

그렇지 않으면, 좀 더 지식 SO 사용자 :

3

쿼리 분석기가있을 수 있지만 간단하게 처음으로 잘라내려면 mysql 명령 줄을 사용하고 "explain select * from foo where bar = 'abc'"를 입력하십시오. 가장 일반적인 쿼리가 인덱스를 사용하는지 확인하고, 순차적 스캔이나 큰 테이블의 정렬을 피하십시오.

+0

- (난 그냥 자신의 제품을 사용 나는 그들을 위해 작동하지 않습니다). 이를 반영하기 위해 질문을 업데이트했습니다. –

1

모든 종류의 MySQL 작업을 수행하는 오픈 소스 툴킷 인 Maatkit을 조사해야합니다. 튜닝하려는 내용에 대한 자세한 정보가 없으면 어떤 도구를 사용하고 어떻게 사용할 지 알려주지는 못하지만 설명서는 훌륭하고 많은 응용 프로그램을 다루고 있습니다.

4

가장 간단한 방법으로 느린 쿼리 로그를 사용하고 어떤 쿼리가 느린 지 확인한 다음 제안 된대로 분석을 시도하십시오.

0

에게 내 SQL의 미세 조정의 나머지 (SQLyog) 굉장 프로파일 러를 포함하는 새로운 버전이에 사용하는 도구를 도와 수 있기를 바랍니다! 내가 과거에 설명했지만, 실제로 출력을 이해 적이없는

enter image description here

http://www.webyog.com/en/screenshots_sqlyog.php

관련 문제