목적.
DB에서 발생하는 슬로우쿼리를 찾아내고 개선하여 슬로우쿼리가 발생하는 빈도를 줄여 perfomance를 최적화 시킨다.
내가 관리하는 RDS에는 여러 솔루션의 DB가 혼재되어 있다. 슬로우 쿼리 자체를 수집하고 제공하는 것은 매우 쉬운일이나 그 자체를 분석하고 해결하는 일은 공수가 꽤 많이 드는 일이다.
그래서 어떻게 하면 보다 가시적이고 쉽게 인지할 수 있게끔 분석을 해서 개발자들에게 전달해 줄까 고민을 많이 했다.
분석도구
pt-query-digest : percona toolkit에 포함된 슬로우 쿼리 분석 툴
(https://www.percona.com/downloads/percona-toolkit/LATEST/)
제공 프로세스
- 분석된 로그를 메일로 매주 월요일 오전 각 개발팀 DB 담당자에게 전달
- 로그는 2주일치 슬로우 쿼리를 수집
- cloudwatch를 통해 2주일치 slow쿼리 필터 및 s3로 추출 → s3에서 다운로드 → pt-query-digest로 slow 쿼리 분석(pt-query-digest {slow쿼리파일명} > {output 파일명}) → 분석 -> 분석 결과 엑셀로 정리 각 어플별 담당자에게 전달
단, s3에서 슬로우 쿼리 원문 다운로드시 원본의 슬로우쿼리와 일부 양식이 달라(time값이 추가되어 있음)서 정규식 검색을 통한 양식을 원본과 통일 시켜야 분석도구가 분석가능함
(노트패드 검색/변환 -> 정규표현식으로 찾기/변환 2019-07.+000z(실제 년/월별로 값 달라짐) -> null로 바꾸기
분석 방법
- pt-query-digest를 통해 나오는 결과 확인 -> 솔루션별 상위 랭크 5개 씩 수집 -> 상위 랭크 5개 쿼리에 대한 계획 확인(explain 쿼리) -> 해당 결과를 엑셀에 첨부 및 분석 결과 제공
처리 확인 프로세스
- 엑셀양식의 검토 확인 파일과 함께 슬로우 쿼리 로그 분석 파일 제공
- 수정 가능 여부 및 수정 가능 날짜에 대한 feedback을 개발팀과 협의해가며 쿼리 튜닝이 가능한지 그리고 수정했는지를 확인
- 엑셀 네이밍과 슬로우쿼리 네이밍을 일치시켜서 버전별 혼선을 방지
'Paul Granduer Lee > DB' 카테고리의 다른 글
RDS tmp_table_size를 올려야하는 이유 (0) | 2019.10.18 |
---|---|
DB 모니터링 TOOL(PMM) 구축 (0) | 2019.08.30 |
DB 스키마 반영 TOOL(DB 스키마 반영 도구 구축기) #2 (0) | 2019.07.25 |
DB 스키마 반영 TOOL(DB 스키마 반영 도구 구축기) #1 (0) | 2019.05.31 |
DB 스키마 비교 TOOL(DB 스키마 비교 도구 구축기) #5 - https SSL인증서 설정 및 route53으로 도메인 연결 (0) | 2019.04.08 |