본문 바로가기

분류 전체보기139

[mySQL] OrderBy 인덱스 (3) 지난 블로그에서 인덱스 종류와 커버링 인덱스에 대해서 알아보았다. 오늘은 OrderBy 인덱스에 관해서 이야기해볼예정이다. Order BY 인덱스 Order By절에 명시된 칼럼에 인덱스가 있다면 MySQL은 이미 정렬된 데이터를 사용하기 때문에 추가적인 정렬작업이 필요없다. 그러나 만약 없다면 filesort방식으로 임시 테이블을 사용해 정렬 작업을 수행한다. filesort 이용하고 있는지 여부는 EXPLAIN 명령어를 통해 Extra칼럼에 Using filesort가 있다면 filesort를 사용하고 있다는 것이다. 왜 Order By절에 명시된 칼럼에 인덱스를 사용하는 것이 좋을까? -> Limit절과 사용하게 된다면 인덱스가 있을때 MySQL은 필요한 만큼만 데이터를 읽고나서 처리를 중단한다. .. 2024. 3. 10.
2024-03-10 일주일 회고록 아무 생각이 없는 요즘 최근 취업안되는 것도 맞고 서류합격도 안되고 있는데 정말 생각이 없다. 뭐랄까 이제 해탈한 기분이랄까... 멘토링도 3,4번 받아보고 고쳐봐도 결과보면 그냥 벽보고 서있는 느낌이랄까..?? 그래서 사실 그냥 백수로 살고 싶다는 생각이...ㅎㅎㅎㅎ 그냥 알바나 하면서 인생을 살아야하나...ㅋㅋㅋㅋ 공채시즌 공채시즌이다.. 그래서 자소서 쓰고 있긴한데..이게 맞나;; 싶기도 하고,,, 사실 뭔가 나는 대기업보다는 스타트업 가서 밑바닥부터 해보고 싶은데... 그게 맘대로 되지않는다.. 스타트업도 채용이 잘 되지않는 시즌이니... 요즘그래서 뭐하냐고? 그냥 공부해 이전에 적용했던 기술들 공부하고, 면접질문도 짜보고, cs관련 질문도 한번씩 읽어보고,,, 싫어하는 코테도 3문제이상씩 풀려고.. 2024. 3. 10.
[mySQL] 인덱스 종류와 커버링 인덱스 (2) 지난 블로그에 인덱스와 복합인덱스에 대해서 기록해보았다. 오늘은 인덱스 종류와 커버링 인덱스에 관해서 이야기해볼예정이다. Explain type, extra 설명 앞선 내용을 설명하기 전에 인덱스를 확인할때바다 type과 extra를 봤다. 이에 관해서 조금 이야기를 나눠보자. 이에 대해서 간단하게 정리해둔 블로그가 있다. 여기서는 주요키워드만 볼 것이다. 1. type all을 빼고는 인덱스를 탄다는 것알 알면된다. index -> index full scan : 수직적 탐색 없이 인덱스 리프 블록 처음부터 끝까지 수평적으로 탐색한다 데이터 검색을 위한 최적의 인덱스가 없을때 차선으로 선택됨 예를 들어 인덱스 선두 칼럼이 조건절에 없으면 옵티마이저는 먼저 Table full scan을 하고자하지만 대용.. 2024. 3. 7.
[mySQL] 인덱스 개념과 복합 인덱스 (1) 인덱스란 지정한 컬럼들을 기준으로 메모리 영역에 일종의 목차를 생성하는 것이다. insert, update, delete의 성능이 좀 느려질 수 있지만 select 성능을 향상 시킬 수있다. 인덱스는 B-tree라는 구조를 사용하는데 이와 관련해서는 이 블로그를 참고 바란다.!(그림으로 잘 설명되어있음) 인덱스는 한마디로 쿼리 결과값을 빠르게 하고 싶어서 생성한 것이다. 그럼 인덱스는 어떤 칼럼으로 생성해야하는데?? 인덱스 칼럼 생성 일반적으로는 카디널리티가 높은 것을 잡아야한다고 한다. 카디널리티란 해당 컬럼 데이터의 중복된 수치를 말하는데 예를 들어 학번 과 성별의 카디널리티를 비교하면 학번이 당연히 높다. 카디널리티 높은 것로 잡는 이유는 필터링이다. 최대한 많은 부분을 걸러내기 위해서이다. 그럼 .. 2024. 3. 7.
[개인프로젝트] 검색기능에 대한 생각 및 회고 (2) 지난 블로그를 보면 검색에 대한 생각을 적어놨다. ElasticSearch와 Mysql Index 에 대한 간단한 개인 의견을 적어놓았다. 추가적으로 캐시를 적용하면 어떻게 될까를 테스트 하기 위해 이번블로그를 적는다.저번 블로그에서 "Mysql Index + 캐시를 사용한다면 ElasticSearch 만큼의 성능이 나오지 않을까" 에 대한 고민을 했었다. 고민의 결과는 Mysql, ElasticSearch 둘다 캐시를 사용하면 검색기능이 향상된다. 왜냐하면 캐시의 개념자체가 임시 메모리에 똑같은 요청에 대한 데이터를 저장하기에 캐시를 사용하면 Mysql를 사용하던 ElasticSearch를 사용하던 임시 메모리에서 캐시 데이터를 가져온다. 그래서 Redis를 이용한 캐시를 예제를 짜보았다. Redis .. 2024. 3. 5.
[개인프로젝트] 검색기능에 대한 생각 및 회고 (1) 최근 검색기능에 대한 생각이 많아지면서 정리해보기로 한다. 개인프로젝트에서 검색기능을 구현했다. 간단하게 말하자면 위치기준, 이름 기준으로 검색하면 private Long id; private String walkerName; private Double walkerLnt; private Double walkerLat; 이렇게 반환값이 나오게했다. 다만 나는 조금더 검색을 빠르게 하고 싶었다. 그래서 어떻게 할까 생각했을때 두가지 방법이 생각이 났다. Mysql Index, ElasticSearch 두가지중 ElasticSearch를 이용했다. Index의 경우 공부해 본적이 없어서 어떤 것을 인덱스를 걸어야할지... 인덱스를 어떻게 생성해야할지 에 대한 고민이 많았다. 근데 ElasticSearch의 경.. 2024. 3. 5.
728x90