programing

최고의 MySQL 성능 튜닝 도구?

css3 2023. 8. 13. 09:56

최고의 MySQL 성능 튜닝 도구?

MySQL에 가장 적합하고 사용하기 쉬운 성능 도구는 무엇입니까?설정의 병목 현상을 정확히 파악하는 데 도움이 필요합니다.SQL 문, 설정 변수 또는 다른 것에 문제가 있습니까?

나쁜 소식은 이것을 도와줄 GUI 도구들이 있지만, 그것은 숙련되고 광범위한 일입니다.따라서 모든 것을 다루지는 않으며, 도움이 되도록 명령줄 stuff/sql 문 등을 사용해야 할 것입니다.저는 명령줄 도구만 사용했습니다.제가 알고 있는/사용해 본 내용에 대해 간략하게 설명하겠습니다.

첫째, 좋은 데이터베이스 설계가 필요합니다.디자인이 나쁘면, 당신은 여기까지만 갈 수 있습니다.여기에는 필드에 적합한 유형을 사용하는 것뿐만 아니라 정규화도 포함됩니다.이 점을 여기에 남겨두겠습니다. 제 생각에 그것은 조금 옆에 있는 것 같고, 당신이 추구하는 것이 아닙니다.

MySQL Query Cache가 설정되어 작동하는지 확인하고 가능하면 RAM을 조금 더 제공하며 중요한 쿼리가 mysql 캐싱을 방해하는 작업을 수행하지 않는지 확인합니다.예를 들어 쿼리에서 NOW() 기능을 사용하면 명백한 이유로 NOW가 매 초마다 변경됩니다!대신 SQL에 타임스탬프를 넣고 가장 가까운 분/시간/일(가장 큰 시간)까지 시간을 사용하여 mysql이 캐싱 이점을 얻을 수 있도록 할 수 있습니다.

최적화를 시작하는 방법:선택 앞에 "설명"을 붙이면 쿼리가 실행되는 방식을 확인하고 쿼리를 개선하는 방법을 식별할 수 있습니다.출력 해석 학습: http://dev.mysql.com/doc/refman/5.0/en/using-explain.html 기존 인덱스에 새 인덱스를 추가하거나 열을 추가하여 상황을 개선할 수 있습니다.그러나 쿼리를 재구성해야 하는 경우도 있습니다.

MySQL로 성능 향상을 시작하는 것은 느린 쿼리 로그를 확인하는 것입니다. 이 로그는 x초 이상 걸리는 모든 쿼리를 파일에 기록합니다.

아직 기록되지 않은 경우의 구성을 포함한 개요는 다음과 같습니다. http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html - 하루 정도 동안 long_http_time을 0으로 설정하여 모든 쿼리가 여기에 기록되도록 하는 것이 성능이 정확히 어디로 진행되고 있는지 파악하는 데 유용한 방법이라는 것도 알게 되었습니다.하지만 저는 그곳에 바로 가지 않을 것입니다!그리고 켜두지 마세요, 로그가 엄청날 수 있습니다.

며칠간의 로깅이 완료되면 여기서 mysqlsla(로그 분석기 속도가 느림)를 찾았습니다. http://hackmysql.com/mysqlsla 은 좋은 도구입니다.

쿼리 로그 분석 속도가 느릴 뿐만 아니라 설명서도 읽을 수 있습니다.그러나 느린 로그에 대해 설명하자면, 느린 쿼리 로그는 많은 데이터를 포함할 수 있으므로 어떤 쿼리가 전체적으로 가장 비싼지 파악하기 어려울 수 있습니다. 예를 들어, 실행 횟수와 where 절의 ID가 다른 두 쿼리가 실제로 동일한 경우 등입니다.

MySQL sla는 이 모든 것을 제공합니다.로그를 통해 실행되며 where 절의 값이 동일하거나 다른 쿼리를 그룹화할 수 있습니다.그런 다음 (기본적으로) 총 실행 시간 측면에서 상위 10개의 쿼리를 제공합니다. 이 쿼리는 종종 약간의 놀라움이 있지만 대개 가장 생산적인 시작점입니다. 가장 비싼 쿼리를 사용하여 EXPLE을 사용하여 개선할 수 있는지 확인합니다.

일부 쿼리는 시간이 오래 걸리고 쉽게 개선할 수 없습니다.이 경우 다른 방법으로 데이터를 가져오거나 최소한 캐시를 사용할 수 있습니까?DB 스키마를 변경해야 할 수도 있습니다.마찬가지로 일부 쿼리는 매우 빠르게 실행되더라도 많이 실행하므로(특히 long_query_time이 0으로 설정된 경우 true) mysqlsla 출력의 맨 위에 있을 수 있습니다.앱에 캐싱을 추가할 시간이 되셨습니까?

http://www.maatkit.org/ 또한 유망해 보이지만, 사용한 적은 없지만, mk-delay-profiler 도구는 쿼리가 느린 이유를 추가로 조사하는 데 유용할 것입니다.

PHPMYADMIN의 "상태" 페이지(또는 모든 쿼리를 실행하여 이 정보를 생성할 수 있음...)는 빨간색으로 불량하다고 생각되는 항목을 강조 표시하고 시스템 리소스 할당의 이점을 확인하는 데 도움이 됩니다.저는 이것에 대해 잘 모릅니다. 저의 접근 방식은 항상 빨간색이고 보기에 좋지 않은 것이 있다면 가서 그것에 대해 읽고 그것이 중요한지 여부와 제가 무엇을 해야 하는지 결정하는 것이었습니다(보통 구성을 변경하여 MySQL에 더 많은 리소스를 할당하는 것을 의미합니다).

최근에 SHOW PROCESSLIST를 실행하는 것이 문제가 있는 서버에서도 유용할 수 있다는 것을 알게 되었습니다.실시간(실시간 스냅샷) 정보만 제공하지만, 특히 몇 번 업데이트하고 변경 사항을 관찰하는 경우 특정 시간에 무슨 일이 일어나고 있는지 파악하는 데 도움이 될 수 있습니다.최근에 사용 가능한 모든 mysql 연결을 사용하여 동일한 쿼리를 실행하는 서버를 발견했습니다.물론 느린 쿼리 로그에 포함되어 있을 수도 있지만, 이는 상황을 빠르고 명확하게 확인할 수 있는 방법입니다.

EXPLE은 당신의 친구입니다.그 외에는 특별한 툴, 테스트 및 OS 툴의 혼합에 의존하여 상황을 정확히 파악해야 합니다.

OS 툴(상황이 CPU 또는 IO에 바인딩되었는지 여부를 판단하는 데 유용)이나 MySQL 자체에서 확인할 수 있는 다양한 변수(글로벌 변수 표시, 엔진 innodb 상태 표시 등)를 통해 많은 것을 효과적으로 확인할 수 있습니다.

저는 성능 테스트 환경을 갖추는 것이 정말 중요하다고 생각합니다.연구소에서 운영 수준의 하드웨어에서 실행되는 운영 수준의 로드(로드 시뮬레이션 사용)가 포함된 운영 규모의 데이터베이스를 얻을 수 있습니다(비싸지만 필수).

이 작업을 완료한 후에는 서버 전체를 녹이더라도 아무런 영향을 미치지 않고 재구성할 수 있으므로 원하는 매개 변수를 완전히 안전하게 조정할 수 있습니다.

성능 테스트 환경에서 테스트한 결과 유용하다는 것이 입증되지 않은 한 사람들이 제안하는 특정 작업을 수행하지 마십시오.

기본적으로 성능 튜닝은 다음과 같은 세 가지 영역을 살펴봅니다.

  • 데이터베이스 자체의 구조(테이블 구조, 인덱스 등)
  • 쿼리
  • 서버 매개 변수 조정

처음 두 개는 종종 마지막 두 개를 선호하여 간과되는데, 이는 처음 두 개가 완료된 후에만 도움이 될 수 있습니다.

서버가 수행해야 하는 작업의 양을 줄이는 것의 중요성을 과소평가하지 마십시오. 필드를 더 작게, 행을 더 적게, 열을 더 적게 사용하는 것이 좋습니다.

MONYog는 제가 고통받는 mysql 서버를 가지고 있을 때 큰 도움이 된다는 것을 알게 되었습니다.

웹 기반 시스템으로 24x7로 시스템을 분석하고 시스템 변수, 캐시 크기 등의 값을 개선하기 위한 적절한 제안을 제공합니다.

또한 mysqlsla 타입의 느린 쿼리 분석기 기능이 내장되어 있습니다.

무료가 아니라서 아쉽습니다.MONyog screenshot: Current Connections

Monyog - MySQL Monitor and Advisor에는 제가 좋아하는 새로운 UI가 있습니다. 저는 다음 기능을 가장 좋아합니다.

  1. 문제 SQL 찾기 - 느린 로그, 일반 로그, PROCESSLIST 및 프록시 사용

  2. 서버가 다운되었거나 연결이 너무 많음 등과 같은 중요한 상태에 대해 경고합니다.

  3. 자신의 쿼리 결과를 주기적으로 모니터링

  4. 복제 모니터링

    기타... 전체 피쳐 목록

언급URL : https://stackoverflow.com/questions/362223/best-mysql-performance-tuning-tool