본문 바로가기
DBMS(DataBase Management System)/MariaDB

[MariaDB] 조회/수정/삽입 등 쿼리 실행 시간이 늘어났을 때 조치 방법

by 연구자 공학코드 2024. 8. 22.

공지사항

  1. 제가 운영하는 네이버 카페 개발자 커뮤니티 코어큐브(https://cafe.naver.com/ewsncube)에 가입하시면 컴퓨터 관련 학습 자료와 질의응답을 제공받으실 수 있습니다.

728x90
반응형

MariaDB에서 조회(SELECT)와 수정(UPDATE), 삽입(INSERT) 등을 수행하는 쿼리의 실행 시간이 늘어났을 때 일반적으로 활용할 수 있는 조치 방법은 아래와 같이 3가지가 있다.

1. DB 메모리 사용량을 늘린다.

MariaDB가 사용하는 메모리 사용량을 늘리면 캐싱을 통해 처리 시간을 단축시킬 수 있다. 자세한 내용은 아래의 글에 설명되어 있다.

  • MariaDB 메모리 설정 확인 쿼리, 2024년 8월 21일. @원문보기

2. 인덱스 순서를 조정한다.

인덱스가 너무 많으면 삽입과 수정시 정렬을 수행하기 위해 실행 시간이 오래 걸릴 수 있다. 또한 조회시 적절하게 인덱스를 활용하지 못 하면 풀스캔을 수행하여 실행 시간이 오래 걸릴 수 있다. 해당 테이블을 활용하는 쿼리의 중요도에 따라 적절하게 인덱스를 설정하는 것이 중요하다.

3. 인덱스를 리빌드 한다.

인덱스 정보 등이 포함된 테이블 정보가 깨지는 경우 인덱스를 복구하는 것이 필요하다. 아래의 사진처럼 MariaDB에서는 'repair'와 'optimize' 기능을 활용해서 인덱스를 복구할 수 있다. 오라클에서는 'rebuild' 명령어로 인덱스를 복구할 수 있다.

optimize 기능을 활용한 화면(optimize를 지원하지 않으면 대안으로 다른 기능이 수행된다)

실제 사례

해외 PoC(Proof of Concept) 프로젝트에서 어느 순간 MariaDB의 성능이 현저히 낮아진 적이 있다. 이 때의 조회 처리 시간은 아래의 사진처럼 7.5초가 걸렸다.

오래 걸리는 조회 시간

DB 서버의 리소스에 여유가 있어서 우선 메모리 사용량을 늘렸다. 그 후 조회 처리 시간은 아래의 사진처럼 3.8초가 걸렸다.

메모리 사용량을 증가시킨 후 조회 결과

응용 소프트웨어의 유지보수가 많이 진행된 상황이라 인덱스를 제대로 타지 못하는 것으로 추정하고 자주 사용하는 쿼리를 분석한 후 인덱스를 조정했다. 그 후 조회 시간이 아래의 사진처럼 단축되는 것을 확인할 수 있었다. 

조회 처리 시간이 단축된 화면

주의사항

조회를 할 때는 조회했던 쿼리가 DB에 캐싱되는 것을 고려하여 where의 값을 다양하게 부여하여서 테스트 해야 한다.

참고문서

  1. "REPAIR TABLE", MariaDB 공식 문서. @원문보기
  2. "OPTIMIZE TABLE", MariaDB 공식 문서. @원문보기

 

728x90
반응형

댓글