Database 3

헛된 다중컬럼 인덱스와 진짜 다중컬럼 인덱스

개요 이전에 explain 기능을 써보다가 다중컬럼 인덱스를 걸어놓은 테이블에서 full scan을 하는 상황을 발견했다. 이후에 테이블을 수정해서 사용하고 있다. 수정한 것이라고는 다중컬럼 인덱스를 만들 때 순서를 수정한 것이다. where 절에 항상 넣는 location_num을 가장 먼저 넣어 unique index를 생성했다. 원래 테이블 unique index의 Seq_in_index의 1번이 date인데 반해 새로운 테이블 unique index의 Seq_in_index의 1번이 location_num인 것이 차이점이다. ALTER TABLE new_index_table ADD UNIQUE INDEX u_idx(location_num, date, time_diff); 이전의 테이블과 현재 수정..

Database 2022.05.26

ES cluster 구축 과정 기록

0. 개요 ElasticSearch Cluster 구축 메뉴얼이나 방법이라기 보다 어떤 과정으로 구축했고 그 과정에서 어떠한 실수를 했는지, 어떤 점을 더 공부해야 하는지에 더 가까운 개인 기록입니다. node 0: Ubuntu 20.04.4 LTS / elasticsearch 8.2.0 node 1: Centos7 / elasticsearch 8.2.0 node 2: Centos7 / elasticsearch 8.2.0 1. Cluster 설치 1-1. tar.gz 배포판 다운로드 $ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.2.0-linux-x86_64.tar.gz $ tar -zxvf elasticsearch..

Database 2022.05.26

MySQL 다중 컬럼 인덱스 사용 방법에 대해

테스트를 진행하게 된 계기 MySQL을 사용하며 다중 컬럼 인덱스를 사용했다. 다중 컬럼 인덱스란 여러 개의 컬럼을 묶어 하나의 인덱스로 활용하는 방식이다. 해당 테이블에서 날짜, 시차, 장소번호의 조합에서 중복이 없어야 했기 때문에 아래의 쿼리로 다중 컬럼 유니크 인덱스를 만들었다. alter table add unique index (date, time_diff, location_num); 아무 생각없이 사용하던 중, MySQL의 Index를 공부하다 explain이라는 명령어를 알게됐다. MySQL 서버가 쿼리를 어떤 방식으로 수행할 것인가, 실행 계획을 알고 싶을 때 사용하는 명령어다. 내가 쓰는 테이블에도 explain을 통해 다양한 query의 실행계획을 알아보는 도중에, 인덱스를 타겠지라고 ..

Database 2022.03.03