• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 1. InnoDB 소개
    2. InnoDB의 개념과 아키텍처
    3. InnoDB 구성
    4. InnoDB 관리
    5. InnoDB 테이블 스페이스 관리
    6. InnoDB 테이블 관리
    7. InnoDB 압축 테이블
    8. InnoDB 파일 형식 관리
    9. InnoDB Row Storage and Row Formats
    10. InnoDB 디스크 I/O 및 파일 영역 관리
    11. InnoDB와 온라인 DDL
    12. InnoDB 부팅 옵션 및 시스템 변수
    13. InnoDB의 성능
    14. InnoDB INFORMATION_SCHEMA 테이블
    1. 압축에 관한 InnoDB INFORMATION_SCHEMA테이블
    2. InnoDB INFORMATION_SCHEMA 트랜잭션과 잠금 테이블
    3. InnoDB INFORMATION_SCHEMA 시스템 테이블
    4. InnoDB INFORMATION_SCHEMA FULLTEXT 인덱스 테이블
    5. InnoDB INFORMATION_SCHEMA 버퍼풀 테이블
    6. InnoDB INFORMATION_SCHEMA 메트릭 테이블
    15. InnoDB 모니터
    16. InnoDB 백업 및 복구
    17. InnoDB와 MySQL 복제
    18. InnoDB 및 memcached의 통합
    19. InnoDB 문제 해결
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

14.14.4 InnoDB INFORMATION_SCHEMA FULLTEXT 인덱스 테이블

MySQL 5.6.4에서 InnoDB 테이블의 FULLTEXT 인덱스 지원의 도입으로 INFORMATION_SCHEMA 데이터베이스에 다음 테이블이 추가되었습니다.

mysql> SHOW TABLES FROM INFORMATION_SCHEMA LIKE 'INNODB_FT%';
+-------------------------------------------+
| Tables_in_INFORMATION_SCHEMA (INNODB_FT%) |
+-------------------------------------------+
| INNODB_FT_CONFIG                          |
| INNODB_FT_BEING_DELETED                   |
| INNODB_FT_DELETED                         |
| INNODB_FT_DEFAULT_STOPWORD                |
| INNODB_FT_INDEX_TABLE                     |
| INNODB_FT_INDEX_CACHE                     |
+-------------------------------------------+
6 rows in set (0.00 sec)

테이블의 개요

  • INNODB_FT_CONFIG : FULLTEXT 인덱스에 대한 메타 데이터와 InnoDB 테이블에 연관된 프로세스를 표시합니다.

  • INNODB_FT_BEING_DELETED : OPTIMIZE TABLE 유지 관리 작업 중에 만 사용되는 INNODB_FT_DELETED 테이블의 스냅 샷을 제공합니다. OPTIMIZE TABLE 이 실행되면 INNODB_FT_BEING_DELETED 테이블은 비워지고 INNODB_FT_DELETED 테이블에서 DOC_ID이 삭제됩니다. INNODB_FT_BEING_DELETED 의 내용은 일반적으로 유효 기간이 짧기 때문에 모니터링 및 디버깅이 테이블의 유용성은 제한됩니다. FULLTEXT 인덱스를 가진 테이블에서 OPTIMIZE TABLE 의 실행의 자세한 내용은 섹션 12.9.6 "MySQL의 전체 텍스트 검색 미세 조정" 을 참조하십시오.

  • INNODB_FT_DELETED : InnoDB 테이블의 FULLTEXT 인덱스에서 삭제 된 행을 기록합니다. InnoDB FULLTEXT 인덱스에 대한 DML 작업 중 고가의 인덱스 재구성이 발생하지 않도록하기 위해 새로 삭제 된 단어에 대한 정보는 별도로 저장되고 텍스트 검색을 수행하면 검색 결과에서 필터링되어 OPTIMIZE TABLE 테이블을 실행 한 경우에만 기본 검색 인덱스에서 제거됩니다.

  • INNODB_FT_DEFAULT_STOPWORD : FULLTEXT 인덱스를 만들 때 기본적으로 사용되는 중지 단어 목록을 유지합니다.

    INNODB_FT_DEFAULT_STOPWORD 테이블 내용은 섹션 12.9.4 "전문 스톱 워드" 를 참조하십시오.

  • INNODB_FT_INDEX_TABLE : FULLTEXT 인덱스에 대한 텍스트 검색을 처리하는 데 사용되는 역 인덱스에 대한 데이터가 포함되어 있습니다.

  • INNODB_FT_INDEX_CACHE : FULLTEXT 인덱스에 새로 삽입 된 행에 대한 토큰 정보가 포함되어 있습니다. DML 작업 중 부하가 큰 인덱스 재구성을 피하기 위해 새로 인덱싱 된 단어에 대한 정보는 별도로 저장되며 OPTIMIZE TABLE 의 실행시 서버가 종료 될 때 또는 캐시 크기가 innodb_ft_cache_size 과 innodb_ft_total_cache_size 에서 정의 된 제한을 초과하는 경우에만 기본 검색 인덱스와 결합됩니다.

참고

INNODB_FT_DEFAULT_STOPWORD 테이블을 제외하고 innodb_ft_aux_table 구성 변수를 FULLTEXT 인덱스를 포함하는 테이블의 이름 ( database_name / table_name )로 설정해야합니다. 그렇지 않으면, InnoDB FULLTEXT 인덱스 INFORMATION_SCHEMA 테이블이 비어 표시됩니다.

예 14.16 InnoDB FULLTEXT 인덱스 INFORMATION_SCHEMA 테이블

이 예에서는 FULLTEXT 인덱스가있는 테이블을 사용하여 FULLTEXT 인덱스 INFORMATION_SCHEMA 테이블에 포함 된 데이터를 보여줍니다.

  1. FULLTEXT 인덱스가있는 테이블을 만들고 일부 데이터를 삽입합니다.

      mysql> CREATE TABLE articles (
           id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
           title VARCHAR (200)
           body TEXT,
           FULLTEXT (title, body)
          ) ENGINE = InnoDB;
    
     INSERT INTO articles (title, body) VALUES
         ( 'MySQL Tutorial', 'DBMS stands for DataBase ...')
         ( 'How To Use MySQL Well', 'After you went through a ...')
         ( 'Optimizing MySQL', 'In this tutorial we will show ...')
         ( '1001 MySQL Tricks', '1. Never run mysqld as root 2. ...')
         ( 'MySQL vs. YourSQL', 'In the following database comparison ...')
         ( 'MySQL Security', 'When configured properly, MySQL ...'); 
  2. innodb_ft_aux_table 변수를 FULLTEXT 인덱스를 포함하는 테이블의 이름으로 설정합니다. INNODB_FT_DEFAULT_STOPWORD 테이블을 제외하고이 변수가 설정되어 있지 않으면 InnoDB FULLTEXT INFORMATION_SCHEMA 테이블이 비어 표시됩니다.

      SET GLOBAL innodb_ft_aux_table = 'test / articles'; 
  3. INNODB_FT_INDEX_CACHE 테이블을 쿼리합니다. 그러면 FULLTEXT 인덱스에 새로 삽입 된 행에 대한 정보가 표시됩니다. DML 작업 중 고가의 인덱스 재구성이 발생하지 않도록하기 위해 새로 삽입 된 행의 데이터는 OPTIMIZE TABLE 이 수행 될 때까지 (또는 서버가 종료되거나 캐시 제한 이상의까지) FULLTEXT 인덱스 캐시에 남아 있습니다.

    mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE LIMIT 5;
    +------------+--------------+-------------+-----------+--------+----------+
    | WORD       | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION |
    +------------+--------------+-------------+-----------+--------+----------+
    | 1001       |            5 |           5 |         1 |      5 |        0 |
    | after      |            3 |           3 |         1 |      3 |       22 |
    | comparison |            6 |           6 |         1 |      6 |       44 |
    | configured |            7 |           7 |         1 |      7 |       20 |
    | database   |            2 |           6 |         2 |      2 |       31 |
    +------------+--------------+-------------+-----------+--------+----------+
    5 rows in set (0.00 sec)
    
  4. innodb_optimize_fulltext_only 을 활성화하고 FULLTEXT 인덱스가있는 테이블에 OPTIMIZE TABLE 을 실행합니다. 그러면 FULLTEXT 인덱스 캐시의 내용이 주 FULLTEXT 인덱스에 플래시됩니다. innodb_optimize_fulltext_only 은 InnoDB 테이블에서 OPTIMIZE TABLE 문 동작 방법을 변경하는 것이며, FULLTEXT 인덱스를 포함 InnoDB 테이블에서의 유지 보수 작업 중에 일시적으로 사용하는 것을 목적으로하고 있습니다.

    mysql> SET GLOBAL innodb_optimize_fulltext_only=ON;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> OPTIMIZE TABLE articles;
    +---------------+----------+----------+----------+
    | Table         | Op       | Msg_type | Msg_text |
    +---------------+----------+----------+----------+
    | test.articles | optimize | status   | OK       |
    +---------------+----------+----------+----------+
    1 row in set (0.03 sec)
  5. INNODB_FT_INDEX_TABLE 테이블에 쿼리하여 주 FULLTEXT 인덱스의 데이터에 대한 정보 ( FULLTEXT 인덱스 캐시에서 플러시 된 직후의 데이터에 대한 정보를 포함)를 표시합니다.

    mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE LIMIT 5;
    +------------+--------------+-------------+-----------+--------+----------+
    | WORD       | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION |
    +------------+--------------+-------------+-----------+--------+----------+
    | 1001       |            5 |           5 |         1 |      5 |        0 |
    | after      |            3 |           3 |         1 |      3 |       22 |
    | comparison |            6 |           6 |         1 |      6 |       44 |
    | configured |            7 |           7 |         1 |      7 |       20 |
    | database   |            2 |           6 |         2 |      2 |       31 |
    +------------+--------------+-------------+-----------+--------+----------+
    5 rows in set (0.00 sec)

    OPTIMIZE TABLE 조작에 의해 FULLTEXT 인덱스 캐시가 플러시 된 때문에 INNODB_FT_INDEX_CACHE 테이블이 비어 있습니다.

      mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE LIMIT 5;
     Empty set (0.00 sec) 
  6. test/articles 테이블에서 일부 레코드를 삭제합니다.

      mysql> DELETE FROM test.articles WHERE id <4;
     Query OK, 3 rows affected (0.11 sec) 
  7. INNODB_FT_DELETED 테이블을 쿼리합니다. 이 테이블은 FULLTEXT 인덱스에서 삭제 된 행이 기록됩니다. DML 작업 중 고가의 인덱스 재구성이 발생하지 않도록하기 위해 새로 삭제 된 레코드에 대한 정보는 별도로 저장되고 텍스트 검색을 수행하면 검색 결과에서 필터링되어 OPTIMIZE TABLE 을 실행 그러자 기본 검색 인덱스에서 제거됩니다.

    mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
    +--------+
    | DOC_ID |
    +--------+
    |      2 |
    |      3 |
    |      4 |
    +--------+
    3 rows in set (0.00 sec)
  8. OPTIMIZE TABLE 을 실행하여 삭제 된 레코드를 삭제합니다.

    mysql> OPTIMIZE TABLE articles;
    +---------------+----------+----------+----------+
    | Table         | Op       | Msg_type | Msg_text |
    +---------------+----------+----------+----------+
    | test.articles | optimize | status   | OK       |
    +---------------+----------+----------+----------+
    1 row in set (0.10 sec)

    INNODB_FT_DELETED 테이블이 비어 표시되게됩니다.

      mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
     Empty set (0.00 sec) 
  9. INNODB_FT_CONFIG 테이블을 쿼리합니다. 이 테이블은 FULLTEXT 인덱스에 대한 메타 데이터와 연관된 처리가 포함되어 있습니다.

    • optimize_checkpoint_limit 은 OPTIMIZE TABLE 의 실행이 중지 될 때까지의 시간 (초)입니다.

    • synced_doc_id 는 발급 된 다음 DOC_ID 입니다.

    • stopword_table_name 사용자 정의 중지 단어 테이블에 대한 database/table 의 이름입니다. 사용자 정의 불용어 테이블이없는 경우,이 필드는 비어 있습니다.

    • use_stopword 은 중지 단어 테이블을 사용할지 여부를 나타냅니다. 이것은 FULLTEXT 인덱스를 만들 때 정의됩니다.

    mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
    +---------------------------+-------+
    | KEY                       | VALUE |
    +---------------------------+-------+
    | optimize_checkpoint_limit | 180   |
    | synced_doc_id             | 8     |
    | stopword_table_name       |       |
    | use_stopword              | 1     |
    +---------------------------+-------+
    4 rows in set (0.00 sec)


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved