10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 36.4 mb
PDF (A4)- 36.4 mb
手册页(TGZ)- 237.7 kb
手册页(邮政编码)- 349.4 kb
信息(Gzip)- 3.4 mb
信息(邮政编码)- 3.4 mb
本手册节选

14.16.4 InnoDB INFORMATION_SCHEMA全文索引表

下表提供的元数据全文索引数量:

mysql >显示表等INFORMATION_SCHEMA 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  | +-------------------------------------------+

表概述

请注意

除了INNODB_FT_DEFAULT_STOPWORD表,这些表最初是空的。的值之前,请先设置innodb_ft_aux_table类的表的名称(包括数据库名称)全文指数(例如,测试/文章)。

例14.5 InnoDB全文索引信息模式表

本例使用一个带有全文索引中包含的数据全文指数INFORMATION_SCHEMA表。

  1. 创建一个表全文索引并插入一些数据:

    CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title,body))mysql> INSERT INTO articles (title,body) VALUES (' mysql教程','DBMS代表数据库…'),('如何很好地使用mysql ','After you went through a…'),('优化mysql ','在本教程中我们展示…'),('1001 mysql技巧','1。不要以root用户运行mysqld。2. ...'), ('MySQL vs. YourSQL','在以下数据库比较中…'),('MySQL安全','当配置正确时,MySQL…');
  2. 设置innodb_ft_aux_table变量添加到表的名称全文索引。如果未设置此变量,则InnoDB全文INFORMATION_SCHEMA表是空的,除了INNODB_FT_DEFAULT_STOPWORD

    SET GLOBAL innodb_ft_aux_table = 'test/articles';
  3. 查询INNODB_FT_INDEX_CACHE类中新插入行的信息全文索引。为避免在DML操作期间进行昂贵的索引重组,新插入行的数据保留在全文索引缓存,直到优化表运行(或直到服务器关闭或超出缓存限制)。

    SELECT * FROM INFORMATION_SCHEMA。INNODB_FT_INDEX_CACHE限制5;+------------+--------------+-------------+-----------+--------+----------+ | 字| FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID |位置  | +------------+--------------+-------------+-----------+--------+----------+ | 1001 | 5 | 5 | 1 | 5 | 0 | | | 3 | 3 | 1 | 3 | 22 | |比较| 6 | 6 | 1 | 6 | 44 | | | 7 | 7配置| 1 | 7 | 20 | |数据库| 2 | 6 | 2 | 2 | 31  | +------------+--------------+-------------+-----------+--------+----------+
  4. 启用innodb_optimize_fulltext_only系统变量和运行优化表在包含全文索引。的内容全文索引缓存到主全文索引。innodb_optimize_fulltext_only改变了优化表语句操作InnoDB表,并打算在维护操作期间临时启用InnoDB表与全文索引。

    SET GLOBAL innodb_optimize_fulltext_only=ON;mysql>优化表+---------------+----------+----------+----------+ | 表| Op | Msg_type | Msg_text  | +---------------+----------+----------+----------+ | 测试。| | |状态优化好的文章  | +---------------+----------+----------+----------+
  5. 查询INNODB_FT_INDEX_TABLE表,查看主数据的信息全文索引,包括关于刚刚从全文索引缓存。

    SELECT * FROM INFORMATION_SCHEMA。INNODB_FT_INDEX_TABLE限制5;+------------+--------------+-------------+-----------+--------+----------+ | 字| FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID |位置  | +------------+--------------+-------------+-----------+--------+----------+ | 1001 | 5 | 5 | 1 | 5 | 0 | | | 3 | 3 | 1 | 3 | 22 | |比较| 6 | 6 | 1 | 6 | 44 | | | 7 | 7配置| 1 | 7 | 20 | |数据库| 2 | 6 | 2 | 2 | 31  | +------------+--------------+-------------+-----------+--------+----------+

    INNODB_FT_INDEX_CACHE表现在为空,因为优化表操作刷新全文索引缓存。

    SELECT * FROM INFORMATION_SCHEMA。INNODB_FT_INDEX_CACHE限制5;空集(0.00秒)
  6. 中删除一些记录测试/文章表格

    mysql> DELETE FROM test。WHERE id < 4;
  7. 查询INNODB_FT_DELETED表格对象中删除的行全文索引。为了避免在DML操作期间进行昂贵的索引重组,关于新删除记录的信息将单独存储,在执行文本搜索时从搜索结果中过滤掉,在运行时从主搜索索引中删除优化表

    SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;+--------+ | DOC_ID  | +--------+ | | 2 | 3 | 4 |  | +--------+
  8. 运行优化表删除已删除的记录。

    mysql>优化表+---------------+----------+----------+----------+ | 表| Op | Msg_type | Msg_text  | +---------------+----------+----------+----------+ | 测试。| | |状态优化好的文章  | +---------------+----------+----------+----------+

    INNODB_FT_DELETED表现在应该是空的。

    SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;空集(0.00秒)
  9. 查询INNODB_FT_CONFIG表格该表包含关于全文索引及相关处理:

    • optimize_checkpoint_limit:之后的秒数优化表停止运行。

    • synced_doc_id:下一个DOC_ID发行。

    • stopword_table_name:数据库/表用户定义的停止词表的名称。的价值如果没有用户定义的停止词表,则列为空。

    • use_stopword:指示是否使用停止词表,在全文创建索引。

    SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;+---------------------------+-------+ | 键|值  | +---------------------------+-------+ | optimize_checkpoint_limit | 180 | | synced_doc_id 8 | | | stopword_table_name | | | use_stopword | 1  | +---------------------------+-------+
  10. 禁用innodb_optimize_fulltext_only,因为它只打算暂时启用:

    SET GLOBAL innodb_optimize_fulltext_only=OFF;