Skip to content

INNODB_FT_INDEX_CACHE

xiaoboluo768 edited this page Jun 7, 2020 · 2 revisions
  • 该表中提供查询包含FULLTEXT索引的innodb存储引擎表中新插入行的全文索引标记信息。它存在的目的是为了避免在DML操作期间进行昂贵的索引重组,新插入的全文索引的单词的信息被单独存储在该表中,直到对表执行OPTIMIZE TABLE语句时、或者关闭服务器时、或者当高速缓存中存放的信息大小超过了innodb_ft_cache_size或innodb_ft_total_cache_size系统配置参数指定的大小才会执行清理
  • 该表默认不记录数据,需要使用innodb_ft_aux_table系统配置参数指定需要记录哪个表中的新插入行的全文索引数据
  • 查询该表的账户需要有PROCESS权限,该表为Memory引擎临时表
  • 表定义语句
CREATE TEMPORARY TABLE `INNODB_FT_INDEX_CACHE` (
  `WORD` varchar(337) NOT NULL DEFAULT '',
  `FIRST_DOC_ID` bigint(21) unsigned NOT NULL DEFAULT '0',
  `LAST_DOC_ID` bigint(21) unsigned NOT NULL DEFAULT '0',
  `DOC_COUNT` bigint(21) unsigned NOT NULL DEFAULT '0',
  `DOC_ID` bigint(21) unsigned NOT NULL DEFAULT '0',
  `POSITION` bigint(21) unsigned NOT NULL DEFAULT '0'
) ENGINE=MEMORY DEFAULT CHARSET=utf8
  • 表字段含义
  • WORD:从新插入行的全文索引列值文本中提取的单词文本
  • FIRST_DOC_ID:该单词在FULLTEXT索引中出现的第一个DOC_ID值
  • LAST_DOC_ID:该单词在FULLTEXT索引中出现的最后一个DOC_ID值
  • DOC_COUNT:该单词在FULLTEXT索引中出现的行数。同一个单词可以在缓存表中多次出现,但每个DOC_ID列值和POSITION列值的组合只会出现一次(即具有唯一性)
  • DOC_ID:新插入的行的DOC_ID值
  • POSITION:由DOC_ID值标识的该单词在文档中的特定位置。该值并不是绝对的位置,它是添加一行记录时,WORD列值字符串在全文索引列值的整个字符串中的位置偏移量(相当于python字符串对象中的下标位置,例如:添加全文索引列值为'edf edfa eeeesdfs',而WORD列值记录为'eeeesdfs',那么POSITION列值记录为9,表示WORD列值是从整个全文索引列值字符串'edf edfa eeeesdfs'的第9个位置开始记录的)
  • 表记录内容示例
# 设置innodb_ft_aux_table选项指定需要记录那个innodb表中的全文索引新插入的值
root@localhost : test 11:41:01> SET GLOBAL innodb_ft_aux_table = 'test/test';
Query OK, 0 rows affected (0.00 sec)

# 执行插入
root@localhost : test 11:40:57> insert into test values(1,'a b dddd');
Query OK, 1 row affected (0.00 sec)

root@localhost : test 11:41:00> insert into test values(1,'a b dddd');
Query OK, 1 row affected (0.01 sec)

root@localhost : test 11:41:01> insert into test values(1,'a b dddd');
Query OK, 1 row affected (0.00 sec)

# 查看INNODB_FT_INDEX_CACHE表中的记录数据
root@localhost : test 11:59:18> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
+------+--------------+-------------+-----------+--------+----------+
| WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION |
+------+--------------+-------------+-----------+--------+----------+
| dddd |            6 |          13 |        8 |      6 |        4 |
| dddd |            6 |          13 |        8 |      7 |        4 |
| dddd |            6 |          13 |        8 |      8 |        4 |
| dddd |            6 |          13 |        8 |      9 |        4 |
| dddd |            6 |          13 |        8 |    10 |        4 |
| dddd |            6 |          13 |        8 |    11 |        4 |
| dddd |            6 |          13 |        8 |    12 |        4 |
| dddd |            6 |          13 |        8 |    13 |        4 |
+------+--------------+-------------+-----------+--------+----------+
8 rows in set (0.00 sec)

上一篇:INNODB_FT_INDEX_TABLE表 |下一篇:INNODB_SYS_TABLESPACES表

Clone this wiki locally