본문 바로가기

카테고리 없음

MySQL 성능 최적화 팁 10

데이터베이스 성능은 최적화 노하우에 따라 크게 차이가 나죠. 데이터베이스 성능 튜닝은 전문가에 의뢰해야 정도로 노하우가 필요한 작업입니다. 관련해 이번 포스팅에서는 데이터베이스 관리자라면 누구나 도전할 있는 MySQL 성능 최적화 10가지를 추려 소개합니다. 참고로 포스팅은 오라클의 온디맨드 웨비나 내용을 요약한 것입니다. 전체 내용은 웨비나(영문) 참조 바랍니다.

 

Tip 1: MyISAM 대신 InnoDB 스토리지 엔진 사용하기

 

MyISAM 스토리지 엔진을 아직 사용 중인가요? MyISAM 스토리지 엔진을 InnoDB 바꾸면 성능을 높일 있습니다. MyISAM 유용한 익스텐션이 많은 것은 사실이지만 성능을 원한다면 InnoDB 스토리지 엔진을 바꾸는 것을 추천합니다. InnoDB 높은 신뢰성과 고성능 사이에 밸런스가 좋은 범용 스토리지 엔진으로 MySQL 5.5.5 릴리즈부터 MyISAM 대체하였습니다.

 

Tip 2: Invisible Columns 사용하기

 

개발한 오래된 애플리케이션을 운영 중인데 프라이머리 키가 필요하다면? 컬럼을 추가하거나, 테이블 구조 변경 없이 프라이머리 키로 MySQL 8.0.23부터 추가된 Invisible Columns 사용하세요.

 

Tip 3: 쿼리 벤치마킹

 

향후 참조를 위해 데이터 크기 정보와 SHOW_CREATE TABLE 아웃풋과 함께 Query Plan FORMAT=TRADITIONAL FORMAT=TREE 저장하세요. 데이터베이스가 느려진다는 말이 자주 들릴 평가를 위한 참조 정보로 활용할 있습니다.

 

Tip 4: MySQL Workbench 사용하기

 

MySQL Workbench 사용하지 않는 인덱스를 보고합니다. 이들 인덱스는 메모리를 차지하므로 성능에 영향을 끼칩니다. 따라서 인덱스를 사용하지 않을 경우 이를 제거하여 리소스를 확보해야 합니다. 또한, MySQL Workbench 인덱스 없이 사용 중인 쿼리도 보고합니다. 이를 참조해 인덱스가 쿼리에 영향을 끼치는지 평가할 있습니다.

 

Tip 5: Invisible Index 사용하기

 

사용하지 않는 인덱스를 삭제(Drop) 경우 무조건 제거하지 말고 Invisible Index 기능을 활용해 테스트해보세요. 인덱스 속성을 Invisible 변경하면 쿼리 성능 하락이 어느 정도인지 파악할 있습니다. 속성만 Invisible 것이지 실제 인덱스가 삭제된 것이 아니기 때문에 인덱스 삭제했는데 막상 알고 보니 필요한 것이었다 하더라도 재생성할 필요가 없습니다. 속성만 Visible 바꾸면 됩니다.

 

Tip 6: Prepared Statement 사용하기

 

MySQL 4.1부터 지원하는 Prepared Statement 같거나 유사한 SQL 구문을 효율적으로 사용할 있는 기능입니다. 이름에 나와 있듯이 구문을 미리 준비해 놓고 파라미터만 바꾸어 반복해 처리하는 기능입니다. 필요 데이터만 보내면 되어 대역폭과 시간 측면에서 유리합니다.

 

Tip 7: Functional Index 사용하기

 

Functional Index 쿼리 최적화를 위한 기능으로 이를 이용하면 검색 속도를 높일 있습니다. MySQL 8.0.13부터 지원하는 Functional Index 기능을 활용하면 단순 열을 인덱싱하는 대신 또는 여러 열에 적용된 함수의 결과에 대한 인덱스를 생성할 있습니다. 이렇게 만든 인덱스를 이용하면 쿼리 수행 전체 테이블을 스캔하지 않아도 되어 실행 시간을 단축할 있습니다.

 

Tip 8: Analyze Table 정기적으로 실행하기

 

Analyze Table 테이블의 인덱스에 있는 키를 분석해 옵티마이저가 사용하는 통계 정보를 업데이트합니다.

 

Tip 9: 백업 관련 명령어

 

MySQL 쉘의 util.dumpInstance() util.dumpSchema() 사용하면 데이터 백업을 더 빠르게 수행할 수 있습니다. 장애나 재해 발생 시 복구 옵션도 유연하게 선택할 수 있습니다. 가령 MySQL Data Service 클라우드에서 온프레미스로 복구할 수 있고 그 반대로 복제본을 옮길 수도 있습니다. 참고로 특정 시점 복구 보장이 필요하면 바이너리 로그를 저장한 다음 백업본을 생성하십시오. 백업이 제 기능을 하려면 정기적인 복원 테스트가 필요하다는 것도 잊지 마세요.

 

Tip 10: MySQL HeatWave 사용하기

 

성능 관련해 최근 주목받는 것이 있죠. 바로 MySQL HeatWave입니다. MySQL HeatWave 분석, AI/ML 혼합 워크로드 환경에서 강력한 성능을 일관성 있게 유지합니다. 또한, 가성비도 높습니다. 오라클 클라우드 환경에서 MySQL HeatWave 이용하면 AWS Redshift 비교할 절반의 비용으로 6.8 높은 성능을 얻을 있습니다. 그리고 1/5 비용으로 Snowflake보다 6.8 빠른 성능을 누릴 있습니다. 클라우드 환경에서 MySQL 데이터베이스 서비스를 이용 중이라면? MySQL HeatWave 활성화하여 높은 성능을 직접 경험해 있습니다.

 

운영체제, 미들웨어, 데이터베이스, 마이그레이션(U2L, DB, WAS), 가상화, 클라우드 및 빅데이터 컨설팅 서비스 관련하여 궁금하신 점은 언제든 문의해 주시기 바랍니다. 아래 링크를 클릭해주세요.

 1:1 문의 바로가기 click

 락플레이스는 2005년에 출범하여 대한민국 리눅스의 역사와 성장을 함께 해온 18년차 오픈소스&클라우드 전문 기업으로 국내 최다 엔지니어, 국내 최고 기술력, 국내외 유수기업 컨설팅의 풍부한 경험과 탄탄한 기술력으로 고객의 성공적인 오픈소스 플랫폼 구축과 응용 프로그램 전체 범위의 서비스를 제공하고 있습니다. 락플레이스는 레드햇코리아로부터 Elite Business Associate/Advanced Business Parter/채널 어워드 한국  파트너/FY15 champion 등을 수상 파트너이며, Microsoft Microsoft Cloud Solution Partner(CSP)로서 함께하고 있습니다.