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