詳細検索

MySQL 성능 향상 경로 (1부: 현재 상황 점검)

아바타
글쓴이 miyashitak
2분 읽기

MySQL 성능 향상 경로 (1부: 현재 상황 점검)
日本語에서 번역 • 원문 보기

**전력이 부족해서 MySQL을 튜닝해보려고 합니다. **

안녕하세요. 이쪽은 플랫폼 담당 미야시타입니다.

이번에는
성능을 향상시키고 싶습니다.
지금까지 여러 조치를 취했지만, 먼저 환경을 검토할 것입니다.

◇ 실행 환경은 AWS EC2의 대형 인스턴스를 사용합니다.
 이 서비스는 OpenPNE를 사용하는 SNS 서비스입니다. 목표 Mysql은 백업과 데이터 집계 목적으로 실행됩니다.
 (생산 서비스에 사용되지 않음)

◇ MySQL 버전은 좀 오래됐고 "5.0.77"입니다. 멀티로 시작했습니다
 이와 더불어 개발 환경을 위한 MySQL도 실행 중입니다. 참고로, 현재 지연 초는 여전히 "1512561초"에서 증가하고 있습니다.

◇ 지금까지 변경된 사항에 관해서는,
 "innodb_buffer_pool_size" 증가 5억 12M에서 2028M으로 증가했습니다.
 "innodb_flush_log_at_trx_commit"을 2에서 0으로 변경했습니다.
 (복구 정확도보다 처리량을 우선시하세요)
 "key_buffer_size"을 32M에서 300M으로 변경,
 "query_cache_size = 0"을 비활성화했습니다.
 그 결과 디스크의 입출력이 약 절반으로 줄어들었지만, 지연을 완전히 없애는 것은 아닙니다.

◇ 마지막으로, 무닌에서 얻는 데이터를 확인하세요.

delay0527

지연이 날이 갈수록 커지고 있습니다. 가끔은 줄어들기도 하지만 원인은 모르겠습니다.

io0527

디스크에는 항상 많은 읽기 I/O가 있습니다.

원인은 명확하며, 이미지와 비디오 데이터가 데이터베이스 데이터에 저장되어 있기 때문입니다.
 데이터 크기가 버퍼 풀 크기에 들어갈 수 없기 때문에 항상 DISK 읽기/쓰기가 진행됩니다.
 또한 MyISAM과 InnoDB는 혼합되어 있어 자원을 효율적으로 사용하지 않습니다.
 OpenPNE가 "삭제 aaa 파일명 LIKE '%bbb%'"라는 쿼리를 많이 보내고 있습니다.
 해결해야 할 문제가 많습니다.

현재 상황을 정리함으로써 다음번부터는 하나씩 개선 조치를 시행하고 싶습니다.

Related Articles