본문 바로가기

Trouble Shooting/DataBase

(3)
복합 인덱스 적용기 이번 블로그에서는 개인 프로젝트에 복합 인덱스를 적용해보면서 느끼는 고찰에 대해 기록해보려고 한다. 배경 회원 엔터티가 프로젝트내의 존재한다. 구성은 userId, userPwd, userName, userNumber, userAddress, userEmail 이 존재하고 upadatedDate, createdDate 가 부수적으로 존재한다. 검색 API를 구성했다. - 동적 쿼리로 구성 기본적으로 동적 쿼리로 구성해 조건에 있으면 해당 조건을 넣어 검색하고 없으면 해당 조건을 빼고 검색했다. 예를 들어, 이름과 주소로만 검색 가능하고 모든 조건을 넣어서도 검색이 가능하다. 또한, 동적 쿼리 구성시 BooleanExpression을 각 필드마다 null여부를 체크해서 반환해주는 메서드를 모두 만들고 좀 ..
Indexing 적용해 성능 개선 이번 블로그에서는 인덱싱을 적용해 성능개선을 시도하면서 느꼈던 고찰에 대해서 정리하고자 한다. 1. 배경 API : 전체 회원에서 특정 조건에 맞게 회원을 검색하고자 한다. DATA : 10000개의 회원이 DB에 존재하는 환경이다. DB : MySql 2. 클러스터형 인덱스 기본적으로 클러스터형 인덱스는 기본키를 중심으로 설정된다. 특징으로는 해당 테이블은 이 기본키를 기준으로 정렬된다. 따라서 클러스터형 인덱스는 정렬에 영향을 준다. 물리적으로 영향을 준다는 말이다. 아무 설정없이도 기본적으로 테이블 생성시 생성된다. 다른 칼럼으로 클러스터형 인덱스를 설정 가능하지만 보통은 기본키로 설정해두고 세컨더리 인덱스를 사용해 다른 칼럼을 인덱스로 설정하는 것이 일반적이다. 성능 측정 아이디 : a 검색 아이..
Redis Cache 성능 측정 1. API 설명 음식점 예약 어플을 제작 중에 있다. 특정 조건에 따른 음식점 리스트를 출력하고자 한다. 성능 개선을 위해 캐시를 활용할 것이며 뚜렷한 변화가 있는지 측정하고자 한다. 입력 : 나라명, 도시명, 동명, 음식점 타입, 페이지, 페이지 당 크기 출력 : 해당 조건에 맞는 음식점 리스트 2. 기존 코드 - 서비스 클래스의 메서드 @Override public HashMap getStoreList(String country, String city, String dong, String type, int page, int size) { return storeDAO.getStoreList(country, city, dong, type, page, size); } - DAO 클래스의 메서드 @Over..