该 INNODB_FT_INDEX_CACHE
表提供了关于新插入行的全文索引的 Token 信息。为了避免在 DML 操作期间昂贵的索引重新组织,在将信息与主搜索索引结合之前,将新索引的单词信息存储在单独的缓存中,直到 OPTIMIZE TABLE
运行时,服务器关闭时,或者缓存大小超过由 innodb_ft_cache_size
或 innodb_ft_total_cache_size
系统变量定义的限制。
该表最初为空。在查询它之前,设置 innodb_ft_aux_table
系统变量的值为包含全文索引的表的名称(包括数据库名称),例如 test/articles
。
有关相关使用信息和示例,请参阅 第 17.15.4 节,“InnoDB INFORMATION_SCHEMA 全文索引表”。
该 INNODB_FT_INDEX_CACHE
表具有以下列:
-
WORD
从新插入行的文本中提取的单词。
-
FIRST_DOC_ID
该单词在全文索引中的第一个文档 ID。
-
LAST_DOC_ID
该单词在全文索引中的最后一个文档 ID。
-
DOC_COUNT
该单词在全文索引中的行数。同一个单词可以在缓存表中多次出现,每次对应不同的
DOC_ID
和POSITION
值。 -
DOC_ID
新插入行的文档 ID。该值可能反映了基础表的 ID 列的值,或者是 InnoDB 在表中没有合适的列时生成的序列值。
-
POSITION
该单词在相关文档中的位置,该值不是绝对位置,而是添加到前一个实例的
POSITION
值。
注意
-
该表最初为空。在查询它之前,设置
innodb_ft_aux_table
系统变量的值为包含全文索引的表的名称(包括数据库名称),例如test/articles
。以下示例演示如何使用innodb_ft_aux_table
系统变量来显示指定表的全文索引信息。mysql> USE test; mysql> CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title,body) ) ENGINE=InnoDB; mysql> 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 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 ...'); mysql> SET GLOBAL innodb_ft_aux_table = 'test/articles'; mysql> SELECT WORD, DOC_COUNT, DOC_ID, POSITION FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE LIMIT 5; +------------+-----------+--------+----------+ | WORD | DOC_COUNT | DOC_ID | POSITION | +------------+-----------+--------+----------+ | 1001 | 1 | 4 | 0 | | after | 1 | 2 | 22 | | comparison | 1 | 5 | 44 | | configured | 1 | 6 | 20 | | database | 2 | 1 | 31 | +------------+-----------+--------+----------+
-
您必须拥有
PROCESS
权限才能查询该表。 -
使用
INFORMATION_SCHEMA
COLUMNS
表或SHOW COLUMNS
语句来查看该表的列的更多信息,包括数据类型和默认值。 -
有关 InnoDB 全文搜索的更多信息,请参阅 第 17.6.2.4 节,“InnoDB 全文索引” 和 第 14.9 节,“全文搜索函数”。