Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BE] feat: 데이터베이스 인덱스 생성 계획 #601

Open
jusung-c opened this issue Sep 5, 2024 · 0 comments
Open

[BE] feat: 데이터베이스 인덱스 생성 계획 #601

jusung-c opened this issue Sep 5, 2024 · 0 comments

Comments

@jusung-c
Copy link
Contributor

jusung-c commented Sep 5, 2024

어떤 기능인가요?

데이터베이스 조회 성능을 높이고자 인덱스를 걸어보려 합니다.

작업 상세 내용

인덱스 설정 과정을 블로그에 정리해봤습니다.

테스트 데이터 셋

  • 20만개 유저
  • 20만개 스터디
  • 1번 스터디에 20만개 투두
  • 1~500번 투두에 10개씩 커밋

인덱스 생성 계획

전체 스터디 조회 로직

  • score, last_commit_day, create_date_time 단일 인덱스 3개

    • 77%(180ms -> 40ms) 성능 개선
    image

마이 스터디 조회 로직

  • STUDY_MEMBER 테이블 user_id 단일 인덱스

    • 66%(90ms -> 30ms) 성능 개선
    image

투두 리스트 (커밋 + 유저) 조회 로직

  • STUDY_TODO 테이블에 study_info_id랑 study_todo_id 복합 인덱스 걸어서 서브쿼리 성능 향상 (10172개 행 접근 -> 4999개 행 접근)

  • STUDY_COMMIT 테이블에 study_todo_id 단일 인덱스 걸어서 서브쿼리 성능 향상 (5050개 행 접근 -> 10개 행 접근)

  • 실행시간은 별로 차이가 없었으나 접근 행 수가 확실하게 줄었습니다.

    image

마이 커밋 리스트 조회 로직

  • user_id와 study_commit_id 복합 인덱스를 걸어줘서 user_id로 필터링하고 study_commit_id로 정렬 및 limit 하는 과정을 줄여줬습니다.

  • 2525개의 행 접근 -> 4개의 행 접근

    image

스터디 커밋 리스트 조회 로직

  • STUDY_COMMIT 테이블에 user_id, study_info_id를 복합 인덱스로 걸어주어 WHERE 절의 성능을 향상시켰습니다. (2525개 행 접근 -> 4개 행 접근)

    image

피드백 요청사항

테스트 서버에서 하다가 더미데이터 너무 많이 넣었더니 서버가 터졌어요~ 복구도 안되네요 이거..? ssh 접속 자체가 안돼요;; 돈이 없어서 업글 포기

인덱스를 처음 걸어보는 거라서 확실하진 않네요. 피드백 후에 배포 서버에 인덱스 걸겠습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant