티스토리 뷰
이번주부터는 백엔드팀에서 대용량처리를 해보기위한 주제로 도서를 선정했다.
주제를 도서로 정한 이유는 데이터 수집이 용이하기 때문이였다.
(물론 주제가 재미는 없어보이겠지만 대용량처리가 중요한거니까 라는 이유로)
주제를 선정을 하고 처음부터 도서관 정보나루에서 csv로 파일을 db에 넣는식으로 작업을 진행하다가
자바에서 POI 라이브러리를 이용해 null처리나 데이터 정제를 excel에서 진행해 데이터를 가져왔다.
그렇게 가져온 데이터의 개수는 약 1630만개가 모였다.
아무런 작업없이 검색시 약 28초가 걸린다.
select * from books where title like "%소세지%";

fulltext 인덱스 ngram 파싱시 아래와같이 생성하였고.
alter table books add FULLTEXT(title) WITH PARSER ngram;
SELECT * FROM books WHERE MATCH(title) AGAINST("소세지");
위와 같이 검색시 연관없는것들도 나왔다.
하지만 걸린속도는 3ms,

SELECT * FROM books WHERE MATCH(title) AGAINST("소세지" in boolean mode);
위와같이 검색시에는 정확하게 연관된것만 검색되었다.

인덱스
검색 속도가 빨라질수 있음 (항상 그런건 아님)
- 쿼리 부하 감소. 성능 향상
- 인덱스 자체가 추가 공간이 필요. 전체 메모리 증가
- 데이터변경이 자주 일어나면 오히려 성능 감소
primary key : 클러스터 인덱스 (영어사전)
unique : 보조 인덱스 (책 뒤의 찾아보기)
> 클러스터
1) 테이블당 한 개
2) 지정한 열에 맞춰 자동정렬 (오름차순)
3) primary key (우선)
4) unique not null> 보조1) 테이블당 여러개2) 자동정렬 X3) unique
pk로 지정하는 컬럼에 자동으로 클러스트형 인덱스가 생성이됨.
db관련해서 알아야할게 산더미인거같다! 인덱스 관련해서 어떻게 생성되는지 생성되는순간 얼마나 사이즈를 차지하는지
클러스트로 생성하게되면 영어사전처럼 순서가 정렬이된다등 사전에 알고있어야할 지식이 많은거같다. 정신없이 검색해가면서 한주가 지나갔는데 다음주에도 화이팅!

공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ssl
- DI
- Spring
- 알고리즘
- 환경세팅
- 항해99
- EntitiyManagerFactory
- method
- badrequest
- querydsl
- JWT토큰
- 김영한
- python
- JPQL
- EC2
- backoffice
- instance
- joinfetch
- 코드해석
- this
- JPA
- 풀텍스트
- POI
- wil
- ajax
- DTO
- .jks
- java
- IOC
- 협업
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
글 보관함