ETC/MySQL 3

[mysql] docker로 mysql 실행하기

요즘엔 docker가 참 개발을 편하게 해주는 것 같습니다. 오늘은 mysql을 docker로 실행해보도록 하겠습니다. 먼저 이미지를 받아줘야 합니다. 아래 명령어를 활용하여 5.7 버전의 mysql을 받아주겠습니다. docker pull mysql:5.7 이제는 container 실행 명령어를 통해 실행만 하면 됩니다. docker run --name mysql -e MYSQL_ROOT_PASSWORD=1234 -e TZ=Asia/Seoul -d -p 3306:3306 mysql:5.7 옵션이 좀 많다보니, 옵션을 하나씩 훑어 보겠습니다. 먼저 --name 옵션은 컨테이너의 이름을 지정하는 옵션으로 mysql로 컨테이너 이름을 정해주었습니다. -e 는 환경변수를 집어넣는 옵션인데, root passwo..

ETC/MySQL 2024.01.31

[mysql] fulltext index ngram parser

개요 fulltext index에 대해서 정리를 한 번 했었는데(https://seokhyun2.tistory.com/92), fulltext index에서 토큰을 나누는 기본 방식은 띄어쓰기를 기준으로 분리를 합니다. 띄어쓰기를 기준으로만 분리를 하게 되면, 한국어에서는 조사가 다 붙어있어서 검색이 어렵습니다. 예를 들면 '한국'이란 명사에 대해서 '한국은', '한국에서', '한국의' 와 같이 조사가 붙어서 띄어쓰기로만 토큰을 나누게 되면 다 별도의 토큰으로 인식이 되어, '한국'이라는 명사가 있는 문장만 찾고 싶은데 찾을 수 없게 됩니다. 그래서 추가적으로 제공되는 기능이 바로 ngram parser입니다. 원리 ngram parser가 무엇인지, 원리를 알아볼텐데요. ngram에서 n은 숫자이고, ..

ETC/MySQL 2023.04.23

[mysql] fulltext index

개요 mysql 데이터베이스를 사용하다보면, 조회 속도 개선을 위한 작업을 많이 하게 됩니다. 그래서 index를 많이 사용하게 되는데, 기본적인 index는 column값이 정확하게 일치하는 기준으로 사용할 수 있습니다. column값이 텍스트를 활용하고, 값이 일부만 일치하는 경우 조회를 하기 위해서는 like 쿼리를 사용하는데, 그 속도가 매우 느립니다. 완전 동일한 조회가 아니라서 기본적인 index를 사용할 수도 없구요. 이럴 때, fulltext를 사용하면 조회 속도를 개선할 수 있습니다. 원리 fulltext index를 사용하는 방법을 알아보기 전에, 원리를 우선 간단하게 알아보겠습니다. column의 값이 영어 이름이라고 가정하고, '마이클 잭슨'과 '마이클 조던' 이라는 2개의 값이 존..

ETC/MySQL 2023.04.09