3.7 전문 검색 엔진(Fulltext search engine)

최근 인터넷 서비스는 대부분 본문 검색이 기본적으로 포함되는 경우가 많은데, 이러한 요건은 전문 검색 엔진 없이는 구현하기가 쉽지 않다. 여기서는 한글을 지원하고, 어느정도 수준의 성능을 보장하고 있는 트리톤과 스핑크스라는 검색엔진을 간단하게 살펴본다.

3.7.1 트리톤 전문 검색 엔진

트리톤을 사용하려면 먼저 Mysql의 소스코드를 패치한 후, 다시 빌드해야 하며 그 이후에 InnoDB같이 하나의 스토리지 엔진으로 사용할 수 있다. 한, 중, 일 아시아권 언어 지원이 강점이며 또한 세나(Senna) 라이브러리를 이용한 빠른 인덱싱과 검색을 제공한다. 또한 Mysql 서버의 전문 검색엔진과 달리 N-그램 방식의 인덱싱도 사용할 수 있다는 것이 가장 큰 장점이다.

3.7.2 mGroonga 전문 검색 엔진(플러그인)

트리톤은 Mysql 5.0.87 버전에서만 사용할 수 있다. 트리톤을 5.1, 5.5 버전에서 사용해야 한다면 트리톤의 후속작인 Groonga 라는 전문 검색 엔진을 사용해야 한다. 하지만 Groonga는 Mysql과 전혀 연관없이 독립적으로 기동하는 소프트웨어라서 Mysql에 익숙한 사용자를 위해 mGroonga 라는 플러그인을 함께 제공한다.

3.7.3 스핑크스 전문 검색 엔진

스핑크스는 Mysql 서버와는 전혀 연관이 없이 자체적인 저장 공간을 가지고 별도의 프로세스로 작동하며, Mysql 서버를 통해 접근할 수 있는 인터페이스만 제공하는 형태의 스토리지 엔진이다.

N-그램방식의 인덱싱과 UTF-8 언어를 지원하는것과 분산처리 기능이 상당히 뛰어나다는 것이 장점이다.

3.8 Mysql 로그 파일

3.8.1 에러 로그 파일

Mysql이 실행되는 도중에 발생하는 에러나 경고 메세지가 출력되는 로그 파일이다. 에러 로그 파일의 위치는 configure 파일에 “log_error” 라는 이름의 파라미터에 정의된 경로에 있는 파일이거나, 별도로 지정되지 않은 경우에는 데이터 디렉터리에 “.err” 확장자가 붙은 파일이다. 여러가지 메시지가 다양하게 출력되지만 다음에 소개되는 메시지를 가장 자주 보게 될 것이다.

  • Mysql 이 시작하는 과정과 관련된 정보성 및 에러 메시지
  • 마지막으로 종료할 때 비정상적으로 종료된 경우 나타나는 InnoDB의 트랜잭션 복구 메시지
  • 쿼리 처리 도중에 발생하는 문제에 대한 에러 메시지
  • 비정상적으로 종료된 커넥션 메시지
  • InnoDB의 모니터링 명령이나 상태 조회 명령의 결과 메시지
  • Mysql 종료 메시지

3.8.2 제너럴 쿼리 로그 파일

쿼리 로그파일은 configure 파일의 “general-log” 라는 이름의 파라메터에 정의된 경로에 있는 파일이고 Mysql 5.1.12 이상의 버전에서는 “general_log_file” 이라는 이름의 파라메터에 정의된 경로에 있는 파일이다.

3.8.3 슬로우 쿼리 로그

Mysql 서버의 쿼리 튜닝은 크게 서비스가 적용되기 전에 전체적으로 튜닝하는 경우와 서비스 운영중에 Mysql 서버의 전체적인 성능 저하를 검사하거나 또는 정기적인 점검을 위한 튜닝으로 나눌 수 있다. 전자의 경우에는 검토해야 할 대상 쿼리가 전부라서 모두 튜닝하면 되지만, 후자의 경우에는 어떤 쿼리가 문제의 쿼리인지 판단하기가 상당히 어렵다. 이런 경우에 서비스에서 사용되고 있는 쿼리 중에서 어떤 쿼리가 문제인지를 판단하는데 슬로우 쿼리 로그가 상당히 많은 도움이 된다.

슬로우 쿼리 로그 파일에는 configure 에서 정의한 시간(long_query_time) 이상의 시간이 소요된 쿼리가 모두 기록된다. 실제 소요된 시간을 기준으로 기록 여부를 판단하기 때문에 정상적으로 실행된 쿼리만 기록된다.