13주 동안 진행한 Real MySQL 8.0 스터디에 대해 회고하는 글입니다.
스터디 방식은 1) 매주 정해진 학습 범위에 대해 Real MySQL 8.0 교재를 읽고, 2) 해당 범위와 관련된 나만의 주제를 정해 블로그 글을 작성하고, 3) 스터디 미팅 시간에 각자의 주제에 대해 발표 및 질의응답 시간을 가졌습니다. 추가적으로 4) 논의할만한 주제를 각자 가져와서 서로 질문하고 답변하는 시간도 가졌습니다.
스터디를 시작할 때 세웠던 목표를 돌아보고, 잘한 점과 개선할 점을 생각해보았습니다. 처음에 세웠던 목표는 다음과 같습니다.
- MySQL 동작 원리 이해하기
- MySQL의 다양한 기능 써보기
- 나의 생각과 고민이 들어간 글을 꾸준히 작성하기
- 발표, 토론 스킬 향상시키기
각각의 목표를 얼마나 달성하였는지에 대해 스스로 평가해보았습니다.
MySQL 동작원리 이해하기 (★★★★☆)
스터디 전에 프로젝트에서 MySQL을 사용해 데이터베이스를 구축해 본적은 있었습니다. 다만 기본적인 SELECT, UPDATE, DELETE 쿼리를 쓸줄 아는 정도였고, MySQL에 대한 이해를 높이고자 스터디를 시작했습니다.
스터디를 통해 MySQL의 내부적인 구조와 동작 방식에 대한 이해를 높일 수 있었고, 특히 InnoDB가 어떻게 동작하는지에 대해 더 자세히 알게되었습니다. InnoDB의 동작 방식을 이해하여 성능을 해치지 않는 쿼리를 작성하는 방법을 고민해보기도 했습니다.
결과적으로 MySQL에서 활용할 수 있는 도구들이 많아져서 쿼리를 작성할 때 더 나은 쿼리를 고민할 수 있는 선택의 폭이 넓어졌고, 주요 개념들은 자세한 부분까지는 기억나지 않아도 원할때 찾아볼 수 있을 정도는 된 것 같습니다.
MySQL의 다양한 기능 써보기 (★★★★★)
저는 직접 실습을 해보면서 학습해야 기억에 더 잘 남기 때문에 대부분의 개념들은 MySQL 서버를 실행시켜 실습을 진행했습니다. 교재 출판사 깃허브 레포지토리에 있는 예제 파일을 MySQL에 로드하여 데이터가 로드된 실습 환경을 만들 수 있었습니다.
또한, 현재 진행 중인 프로젝트에 어떻게 적용할 수 있을지 고민해보고 적용해보면서 실제 문제를 해결할 수 있는 도구를 많이 챙긴 것 같습니다.
실제 문제에 적용하여 도움이 된 한가지 사례는 프로젝트의 end-to-end 테스트에 사용하는 MySQL 서버에서 Performance 스키마와 Sys 스키마를 이용해 쿼리 분석을 수행해보고, 어떤 부분의 쿼리를 튜닝해보아야할지 아이디어를 얻을 수 있었습니다.
나의 생각과 고민이 들어간 글을 꾸준히 작성하기 (★★★★☆)
책 내용을 그대로 정리한 글들은 이미 인터넷 상에 많이 있기 때문에 모든 주제를 단순 정리하는 것 보다는 궁금한 주제에 대해 궁금증이 풀릴 정도로 알아보고 정리한 글을 작성하고자 했습니다.
결과적으로 13주 동안 13개의 블로그 게시글을 작성했습니다. 작성한 게시글 목록을 작성 동기에 따라 4가지 유형으로 나눠서 정리해보았습니다.
책을 읽으며 생긴 궁금증이나 평소 궁금했던 것을 해결한 과정
실습하며 테스트해본 것들
성능 개선에 유용할 것 같아 나중에 사용해보고 싶은 기술들
- 커버링 인덱스 - 인덱스에 있는 칼럼만으로 쿼리를 처리할 수 있는 경우 빠른 실행시간을 가진다.
- 지연된 조인(Delayed Join) - GROUP BY, LIMIT처럼 원래 테이블보다 레코드 건수가 줄어드는 연산이 포함된 쿼리를 개선할 때 고려할 수 있다.
- 온라인 DDL - 프로덕션 환경에서 테이블 스키마를 변경할 일이 생기면 유용할 것 같다.
- 쿼리 성능 확인하기 - Performance 스키마 & Sys 스키마 - 실제로 어떤 쿼리들이 사용되는지, 쿼리 실행 시간 등을 조회하여 쿼리 튜닝의 자료로 사용할 수 있다.
잘 알지 못했던 개념에 대해 이해하기 위해 정리
아쉬운 점은 기존에 잘 몰랐던 기술(파티셔닝, 복제, InnoDB 클러스터 등)은 이해하는데 오래 걸려서 논의를 확장할 수 있는 주제가 아닌 스스로 개념을 이해할 수 있도록 정리글을 작성하게 된 것입니다. 그래도 글을 작성하며 잘 몰랐던 개념을 좀더 이해할 수 있었습니다.
발표, 토론 스킬 향상시키기 (★★☆☆☆)
사실 발표를 잘 못해서 연습을 위해 스터디 과정에 발표하기를 넣었는데, 글 작성에 많은 시간을 들이고 발표는 따로 준비를 하지 못한 것이 조금 아쉽습니다. 그래도 글을 작성하면서 생각을 정리한 상태에서 발표를 했기에 크게 막히는 부분 없이 발표를 할 수 있었고 글 내용에 대한 질문도 나름의 논리를 가지고 설명할 수 있었습니다.
결론적으로 스터디 이전과 비교했을 때 발표 실력이 많이 향상되지는 않았지만, 다른 팀원분들이 좋은 질문을 많이 주셔서 질문에 답변하는 실력은 향상된 것 같습니다.
마무리
마지막 스터디 미팅날 다함께 회고하는 시간을 가졌고, 팀원들 모두 스터디 프로세스에 전반적으로 만족하는 것을 알 수 있었습니다.
나만의 주제를 선정해서 고민하고 글을 작성하는 과정이 힘들긴 했지만, 고민하는 과정을 거치며 내가 아는 것과 모르는 것이 명확해지고, 애매하게 알던 것도 그냥 넘어가는게 아니라 제대로 학습할 수 있었던 것 같습니다.
따라서 전체적인 프로세스는 그대로 가져가면서 아쉬웠던 점들은 보완하여 다음에는 운영체제 스터디를 진행할 계획입니다.