2021-07-20(Tue)

Facts (사실, 객관)

CS admin에서 발생하는 slow query를 해결하기 위해 온종일 고민했다.

Feelings (느낌, 주관)

온라인이어서 불편한 점을 여실히 느꼈다. 재원님이 옆에 계셨으면 가볍게 물어봐서 확인가능한 부분이었는데, 온라인이어서 싱크가 늦어졌다.

실 DB SELECT 권한도 아직 주어지지 않아서, SQL 튜닝 진행이 어려웠다. 가설들을 바로바로 확인하기 어려운 환경인게 아쉽다. 곧 인프라팀 검토 끝나면 권한이 열리겠지!

흠 그래도 그 덕에 오퍼월 코드를 뜯어보고, kaminari gem 소스코드도 뜯어보고, SQL 튜닝 방법에 대해서 학습하는게 즐거웠다.

그리고 꼼꼼하게 코드를 뜯어보다보니 데이터 맵핑 오류를 찾아낼 수 있었다. 조금이나마 기여한 것 같아서 기분 좋다.

Findings (배운 점)

  • SELECT(*) vs SELECT(column) vs SELECT(column distinct) 의 성능에 대해서 개념을 세웠다.

  • SELECT시 불필요한 컬럼은 SELECT하지 않도록 하면 성능이 향상된다.

  • kaminari gem에서 SELECT COUNT(*) 쿼리를 날리지 않으려면 .without_count 를 paginate object에서 호출하거나, total_pages 값을 option으로 paginate 메소드에 전달하면 된다.

참고

Affimation (자기 선언)

  • 나는 내가 도움이 필요한지 여부를 잘 판단하고, 적절하게 필요한 도움을 얻는 개발자다.

Last updated