좋은 DB 엔지니어가 되기 위한 습관 만들기

2023. 05. 03. 손구영

Data

mysql> SHOW SESSION STATUS LIKE 'sort_rows';

+--------------------+--------+
| Variable_name | Value |
+--------------------+--------+
| Sort_rows         | 0       |
+--------------------+--------+
1 row in set (0.01 sec)

안녕하세요~! 저는 클라우드스토리지개발팀에 2021년 2월에 주니어 DB 엔지니어로 팀에 합류하게 된 손구영입니다.

입사 후 시니어 팀원분들에 비해 부족한 역량을 채우기 위해 여러 테스트와 작업을 하며 Feedback을 받고 있습니다. 여러 시니어분들의 Feedback을 통해 미처 생각하지 못했던 부분들에 대해서 생각해볼 수 있었고, 기존에 알고 있던 지식들도 더 정확하게 알 수 있는 계기가 되고 있습니다. 위의 경험 중 기억에 남고 도움이 되었던 경험을 클라우드스토리지개발팀에 관심이 있는 주니어 DB 엔지니어분들께 공유드리고자 합니다.

최근 MySQL의 Status Variable 정의에 대해 이해하고 실제로 테스트하는 작업을 진행했습니다.
그 중, 정렬 관련 Status variable에 테스트하며, 실제 운영에 필요한 모니터링 지표에 대해 고민해보게 되었는데 이 때의 경험이 주니어 DB 엔지니어로서 성장하는데 좋은 습관을 가질 수 있는 계기가 되어 이 내용을 주제로 글을 쓰게 되었습니다.

먼저.. 기술블로그와 같이 제 경험을 공유하는 첫 시도라 부족한 글이어도 너그럽게 봐주시길 부탁드립니다😭

정렬 관련 Status variable 테스트

MySQL의 지표 중, 정렬관련 상태 지표의 수치를 통해 운영 서버가 정렬 시 인덱스 사용 유무를 파악할 수 있는 지표입니다.
아래에 있는 총 4가지의 상태 지표가 있으며, 공식 문서에서 아래와 같이 정의하고 있습니다.

  • Sort_Scan
    • 정렬 작업 시, 테이블 풀스캔이 발생하면 증가
  • Sort_range
    • 정렬 작업 시, 인덱스 범위스캔이 발생하면 증가
  • Sort_merge_passes
    • sort_buffer 크기보다 큰 정렬 작업으로 인해 임시파일을 이용한 Merge작업이 발생하면 증가
  • Sort_rows
    • 정렬이 사용된 쿼리 결과의 Row수 만큼 증가
  • 공통 관심사를 나누고 기술 교류 활동을 함께하며 꾸준히 성장해 나가길 희망합니다. 기술블로그, 뉴스레터, 테크세미나, 스터디, 우아콘에서 자주 만나요!