YAPP-Github / 21st-ALL-Rounder-Team-2-BE

🎨 간편한 전시 관람 서비스, 아르티 ARTIE 🎨
Apache License 2.0
9 stars 0 forks source link

User 테이블의 uid 필드 varchar 크기 조절을 통한 인덱스 최적화 #120

Open akalswl14 opened 1 year ago

akalswl14 commented 1 year ago

User 테이블의 uid 필드를 사용한 쿼리가 많아, 인덱스를 등록해둔 상태입니다.

인덱스 키 값의 크기가 커지면 디스크에서 읽어야 하는 횟수가 증가한다. 또한 버퍼 풀 크기가 제한적이라서 하나의 레코드를 위한 인덱스 크기가 커지면 캐시 가능한 레코드 수가 줄어들어 메모리 효율이 떨어진다.

위 내용에 따르면, 인덱스 설정시 컬럼의 자료형의 사이즈를 고려해야합니다. 현재 해당 컬럼은 현재 varchar 255로, 실제로 들어가는 값보다 큰 사이즈의 varchar 자료형을 갖습니다. uid를 인덱스로 설정하면서, 가능한 부담을 줄이기 위해 해당 컬럼의 자료형 크기를 줄이는 것도 좋은 방법이라고 생각합니다.

현재 해당 필드는 google, facebook 기반 로그인을 사용하게 되면 Firebase Authentication 정책에 따라, 1~128자의 문자열이 됩니다. https://firebase.google.com/docs/auth/admin/manage-users?hl=ko#bulk_retrieve_user_data Naver, Kakao 밴더사 기반 로그인은 해당 밴더사의 값을 따르므로 확인 후에 가능하다면 줄이는 것이 좋을 것 같습니다.

참고로, @Column 어노테이션을 적용하여 컬럼을 설정할 때 문자열 컬럼의 사이즈는 기본적으로 255가 적용된다고 합니다. ( 어노테이션 내부의 length 속성으로 지정해주면 됩니다. ) https://jakarta.ee/specifications/persistence/2.2/apidocs/javax/persistence/column#length()