2013-08-21 6 views
2

기존 MYSQL 설치에서 사용되지 않는 색인을 찾는 데 어떤 방법을 사용합니까? Percona에는 도구가 있지만이 상자는 Amazon RDS 인스턴스이므로 이러한 도구를 사용하기위한 견해와 측면에 액세스 할 수 없습니다.사용하지 않는 색인 찾기

나는 http://hackmysql.com/mysqlidxchk을 찾았으며이 시점에서 내 유일한 옵션 일 수 있다고 생각합니다. 필자는 수작업으로 빗질 할 수 있고 주요한 중복 키를 사용하여 인덱스를 찾을 수 있지만 생산성이 떨어지는 것으로 보입니다.

다른 해결책이 있습니까?

+0

가능한 중복 [어떻게 MySQL 데이터베이스에서 사용되지 않는 색인을 식별합니까?] (http://stackoverflow.com/questions/3243475/how-do-you-identify-unused-indexes-in-a-mysql - 데이터베이스) –

+0

당신은 정확합니다 제레미. 이전의 검색으로는 충분하지 않았습니다. – Susurrus

답변

3

예, pt-index-usage이 있지만 반드시 RDS 인스턴스에 대해 실행할 필요는 없습니다.

쿼리 로그 *를 수집 한 다음 랩톱에서도 어디서든 실행중인 데이터베이스의 스냅 샷에 대해 pt-index-usage를 실행할 수 있습니다. 이 도구는 로그의 모든 쿼리에 대해 EXPLAIN을 실행 한 다음 데이터베이스에 있지만 EXPLAIN 보고서에서 사용하지 않은 인덱스를보고합니다.

RDS는 테이블 기반 쿼리 로그 만 지원하므로이 때문에 발생하는 오버 헤드에주의하십시오.

그리고 테이블 기반 쿼리 로그를 pt-index-usage의 입력으로 사용하기 전에 내 보내야합니다. 수출을 할 수있는 여기에 스크립트가 : https://github.com/billkarwin/bk-tools/blob/master/export-slow-log-table

는 MySQL은 5.6 새로운 performance_schema 테이블 table_io_waits_summary_by_index_usage (http://dev.mysql.com/doc/refman/5.6/en/table-waits-summary-tables.html 참조) 각 인덱스가 RAM에 디스크에서로드되는 빈도를 알아 본을 활성화 할 수 있습니다, 따라서 그것은이다도있다 사용되고있다. 비록 당신이 MySQL 5.6을 사용하지 않을지라도, 어쨌든 RDS에서 performance_schema 옵션을 활성화 할 수 있는지 모르겠습니다. 하지 웹 UI를 통해 비록


는 Percona에서 내 동료는, 당신은 아마존 RDS에 performance_schema을 활성화 할 수 있습니다 확인하는 블로그를 기록했다. http://www.mysqlperformanceblog.com/2013/08/21/amazon-rds-with-mysql-5-6-configuration-variables/

+0

좋은 지적 Karwin. 나는이 길을 내려갈 수 있고 내가 무엇을 만들 수 있는지를 생각할 것이다. mysqlidxchk에 게시 한 링크는 기본적으로 동일한 작업을 수행합니다. 우리는 5.1에서 실행되므로 performance_schema 항목을 사용할 수 없습니다. – Susurrus

0

EXPLAIN이 검색어와 함께 도움이됩니다. 그것을 시도해보십시오. 도움이되지 않는다면, 그렇게 말하십시오. 당신이 누락 된 부분을 주석으로보고 싶습니다. 그리고 나는 그것을 조사 할 것입니다.

+0

이것은 내가 지금하는 일이지만, 현재의 설정에는 내가 빗어 내야 할 수백 가지의 쿼리가 있습니다. EXPLAIN을 사용하여 느린 쿼리 문제를 이미 해결했으며, 불필요하게 업데이트되는 흔적 인덱스를 찾는 다음 단계로 넘어 가고 있습니다. – Susurrus

관련 문제