InnoDB INFORMATION_SCHEMA FULLTEXT Index Tables
下表提供了FULLTEXT索引的元数据:
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 |
+-------------------------------------------+
INNODB_FT_CONFIG
表显示有关InnoDB表的FULLTEXT索引和相关处理的元数据。INNODB_FT_BEING_DELETED
表是INNODB_FT_DELETED表的快照,仅在OPTIMIZE TABLE维护操作期间使用。 运行OPTIMIZE TABLE时,将清空INNODB_FT_BEING_DELETED表,并从INNODB_FT_DELETED表中删除DOC_ID。 由于INNODB_FT_BEING_DELETED的内容通常具有较短的生命周期,因此该表对监视或调试的实用性有限。 有关在具有FULLTEXT索引的表上运行OPTIMIZE TABLE的信息,请参见“微调MySQL全文搜索”。INNODB_FT_DELETED
表记录从InnoDB表的FULLTEXT索引中删除的行。为避免在InnoDB FULLTEXT索引的DML操作期间进行昂贵的索引重组,有关新删除的单词的信息将单独存储,在执行文本搜索时从搜索结果中过滤掉,并仅在发出OPTIMIZE TABLE时从主搜索索引中删除InnoDB表的声明。有关更多信息,请参阅优化InnoDB全文索引。INNODB_FT_DEFAULT_STOPWORD
表包含在InnoDB表上创建FULLTEXT索引时默认使用的停用词列表。 有关默认InnoDB禁用词列表以及如何定义自己的禁用词列表的信息,请参见“全文停用词”。INNODB_FT_INDEX_TABLE
表显示有关用于处理InnoDB表的FULLTEXT索引的文本搜索的反向索引的信息。INNODB_FT_INDEX_CACHE
表包含有关FULLTEXT索引中新插入行的标记信息。 为避免在DML操作期间进行昂贵的索引重组,有关新索引词的信息将单独存储,并且仅在运行OPTIMIZE TABLE
时,服务器关闭时或缓存大小超过由innodb_ft_cache_size
或innodb_ft_total_cache_size
。
7. INNODB_FT_BEING_DELETED
INNODB_FT_BEING_DELETED
表是INNODB_FT_DELETED表的快照,仅在OPTIMIZE TABLE维护操作期间使用。 运行OPTIMIZE TABLE时,将清空INNODB_FT_BEING_DELETED表,并从INNODB_FT_DELETED表中删除DOC_ID。 由于INNODB_FT_BEING_DELETED的内容通常具有较短的生命周期,因此该表对监视或调试的实用性有限。 有关在具有FULLTEXT索引的表上运行OPTIMIZE TABLE的信息,请参见“微调MySQL全文搜索”。
此表最初显示为空,直到您设置配置变量innodb_ft_aux_table的值。 输出类似于为INNODB_FT_DELETED表提供的示例。
有关相关用法信息和示例,请参见“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”。
INNODB_FT_BEING_DELETED
表有以下列:
mysql> desc INNODB_FT_BEING_DELETED;
+--------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| DOC_ID | bigint(21) unsigned | NO | | 0 | |
+--------+---------------------+------+-----+---------+-------+
1 row in set (0.00 sec)
- DOC_ID:正在删除的行的文档ID。 此值可能反映您为基础表定义的ID列的值,或者它可以是InnoDB在表不包含合适的列时生成的序列值。 此值用于跳过innodb_ft_index_table表中的行,当您通过OPTIMIZE TABLE语句从FULLTEXT索引中物理删除已删除行的数据之前进行文本搜索时。 有关更多信息,请参阅优化InnoDB全文索引。
Notes
您必须具有PROCESS权限才能查询此表。
使用INFORMATION_SCHEMA COLUMNS表或SHOW COLUMNS语句查看有关此表的列的其他信息,包括数据类型和默认值。
有关InnoDB FULLTEXT搜索的更多信息,请参见“InnoDB FULLTEXT索引”和“全文搜索函数”。
8. INNODB_FT_CONFIG
INNODB_FT_CONFIG
表显示有关InnoDB表的FULLTEXT索引和相关处理的元数据。
在查询此表之前,请将配置变量innodb_ft_aux_table设置为包含FULLTEXT索引的表的名称(包括数据库名称),例如test / articles。
有关相关用法信息和示例,请参见“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”。
INNODB_FT_CONFIG
表包含以下列:
KEY:指定包含FULLTEXT索引的InnoDB表的元数据项的名称。
VALUE:与相应KEY列关联的值,反映InnoDB表的FULLTEXT索引方面的某些限制或当前值。
Notes
此表仅用于内部配置。它不用于统计信息目的。
您必须具有PROCESS权限才能查询此表。
使用INFORMATION_SCHEMA COLUMNS表或SHOW COLUMNS语句查看有关此表的列的其他信息,包括数据类型和默认值。
KEY列的值可能会根据InnoDB全文处理的性能调整和调试需求而发展。关键价值包括:
optimize_checkpoint_limit:运行OPTIMIZE TABLE的秒数。
synced_doc_id:要发布的下一个DOC_ID。
stopword_table_name:用户定义的停用词表的数据库/表名。如果没有用户定义的停用词表,则该字段显示为空。
use_stopword:指示是否使用了一个停用词表,该表是在创建FULLTEXT索引时定义的。
有关InnoDB FULLTEXT搜索的更多信息,请参见“InnoDB FULLTEXT索引”和“全文搜索函数”。
示例
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
+---------------------------+-------------------+
| KEY | VALUE |
+---------------------------+-------------------+
| optimize_checkpoint_limit | 180 |
| synced_doc_id | 0 |
| stopword_table_name | test/my_stopwords |
| use_stopword | 1 |
+---------------------------+-------------------+
9. INNODB_FT_DEFAULT_STOPWORD
INNODB_FT_DEFAULT_STOPWORD
表包含在InnoDB表上创建FULLTEXT索引时默认使用的停用词列表。 有关默认InnoDB禁用词列表以及如何定义自己的禁用词列表的信息,请参见“全文停用词”。
有关相关用法信息和示例,请参见“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”。
INNODB_FT_DEFAULT_STOPWORD
表包含以下列:
Notes
您必须具有PROCESS权限才能查询此表。
使用INFORMATION_SCHEMA COLUMNS表或SHOW COLUMNS语句查看有关此表的列的其他信息,包括数据类型和默认值。
有关InnoDB FULLTEXT搜索的更多信息,请参见“InnoDB FULLTEXT索引”和“全文搜索函数”。
示例
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
+-------+
| value |
+-------+
| a |
| about |
| an |
| are |
| as |
| at |
| be |
| by |
| com |
| de |
| en |
| for |
| from |
| how |
| i |
| in |
| is |
| it |
| la |
| of |
| on |
| or |
| that |
| the |
| this |
| to |
| was |
| what |
| when |
| where |
| who |
| will |
| with |
| und |
| the |
| www |
+-------+
36 rows in set (0.00 sec)
10. INNODB_FT_DELETED
INNODB_FT_DELETED
表记录从InnoDB表的FULLTEXT索引中删除的行。为避免在InnoDB FULLTEXT索引的DML操作期间进行昂贵的索引重组,有关新删除的单词的信息将单独存储,在执行文本搜索时从搜索结果中过滤掉,并仅在发出OPTIMIZE TABLE时从主搜索索引中删除InnoDB表的声明。有关更多信息,请参阅优化InnoDB全文索引。
此表最初显示为空,直到您将配置变量innodb_ft_aux_table的值设置为包含FULLTEXT索引的表的名称(包括数据库名称),例如test/articles
。
有关相关用法信息和示例,请参见“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”。
INNODB_FT_DELETED
表包含以下列:
- DOC_ID:
新删除的行的文档ID。此值可能反映您为基础表定义的ID列的值,或者它可以是InnoDB在表不包含合适的列时生成的序列值。此值用于跳过innodb_ft_index_table表中的行,当您通过OPTIMIZE TABLE语句从FULLTEXT索引中物理删除已删除行的数据之前进行文本搜索时。有关更多信息,请参阅优化InnoDB全文索引。
Notes
您必须具有PROCESS权限才能查询此表。
使用INFORMATION_SCHEMA COLUMNS表或SHOW COLUMNS语句查看有关此表的列的其他信息,包括数据类型和默认值。
有关InnoDB FULLTEXT搜索的更多信息,请参见“InnoDB FULLTEXT索引”和“全文搜索函数”。
示例
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
+--------+
| DOC_ID |
+--------+
| 6 |
| 7 |
| 8 |
+--------+
11. INNODB_FT_INDEX_CACHE
INNODB_FT_INDEX_CACHE
表包含有关FULLTEXT索引中新插入行的标记信息。 为避免在DML操作期间进行昂贵的索引重组,有关新索引词的信息将单独存储,并且仅在运行OPTIMIZE TABLE
时,服务器关闭时或缓存大小超过由innodb_ft_cache_size
或innodb_ft_total_cache_size
。
在查询此表之前,请将配置变量innodb_ft_aux_table设置为包含FULLTEXT索引的表的名称(包括数据库名称),例如test / articles。
有关相关用法信息和示例,请参见“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”。
INNODB_FT_INDEX_CACHE
表包含以下列:
- WORD :从新插入的行的文本中提取的单词。
- FIRST_DOC_ID:此单词出现在FULLTEXT索引中的第一个文档ID。
- LAST_DOC_ID :此单词出现在FULLTEXT索引中的最后一个文档ID。
- DOC_COUNT :此单词出现在FULLTEXT索引中的行数。在缓存表中可以多次出现相同的单词,对于DOC_ID和POSITION值的每个组合一次。
- DOC_ID :新插入行的文档ID。此值可能反映您为基础表定义的ID列的值,或者它可以是InnoDB在表不包含合适的列时生成的序列值。
- POSITION :由DOC_ID值标识的相关文档中该单词的该特定实例的位置。该值不代表绝对位置;它是添加到该单词的前一个实例的POSITION的偏移量。
Notes
- 此表最初显示为空,直到您设置配置变量innodb_ft_aux_table的值。 以下示例演示如何使用innodb_ft_aux_table选项显示有关指定表的FULLTEXT索引的信息。
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 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 ...');
mysql> SET GLOBAL innodb_ft_aux_table = 'test/articles';
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test.articles;
+----+-----------------------+------------------------------------------+
| id | title | body |
+----+-----------------------+------------------------------------------+
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
| 2 | How To Use MySQL Well | After you went through a ... |
| 3 | Optimizing MySQL | In this tutorial we will show ... |
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 6 | MySQL Security | When configured properly, MySQL ... |
+----+-----------------------+------------------------------------------+
mysql> USE INFORMATION_SCHEMA;
mysql> SELECT * FROM INNODB_FT_INDEX_CACHE;
+------------+--------------+-------------+-----------+--------+----------+
| 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 |
| database | 2 | 6 | 2 | 6 | 35 |
| dbms | 2 | 2 | 1 | 2 | 15 |
| following | 6 | 6 | 1 | 6 | 25 |
| mysql | 2 | 7 | 6 | 2 | 0 |
| mysql | 2 | 7 | 6 | 3 | 11 |
| mysql | 2 | 7 | 6 | 4 | 11 |
| mysql | 2 | 7 | 6 | 5 | 5 |
| mysql | 2 | 7 | 6 | 6 | 0 |
| mysql | 2 | 7 | 6 | 7 | 0 |
| mysql | 2 | 7 | 6 | 7 | 41 |
| mysqld | 5 | 5 | 1 | 5 | 31 |
| never | 5 | 5 | 1 | 5 | 21 |
| optimizing | 4 | 4 | 1 | 4 | 0 |
| properly | 7 | 7 | 1 | 7 | 31 |
| root | 5 | 5 | 1 | 5 | 41 |
| run | 5 | 5 | 1 | 5 | 27 |
| security | 7 | 7 | 1 | 7 | 6 |
| show | 4 | 4 | 1 | 4 | 42 |
| stands | 2 | 2 | 1 | 2 | 20 |
| through | 3 | 3 | 1 | 3 | 37 |
| tricks | 5 | 5 | 1 | 5 | 11 |
| tutorial | 2 | 4 | 2 | 2 | 6 |
| tutorial | 2 | 4 | 2 | 4 | 25 |
| use | 3 | 3 | 1 | 3 | 7 |
| well | 3 | 3 | 1 | 3 | 17 |
| went | 3 | 3 | 1 | 3 | 32 |
| you | 3 | 3 | 1 | 3 | 28 |
| yoursql | 6 | 6 | 1 | 6 | 10 |
+------------+--------------+-------------+-----------+--------+----------+
33 rows in set (0.00 sec)
- 有关InnoDB FULLTEXT搜索的更多信息,请参见“InnoDB FULLTEXT索引”和“全文搜索函数”。
12. INNODB_FT_INDEX_TABLE
INNODB_FT_INDEX_TABLE
表显示有关用于处理InnoDB表的FULLTEXT索引的文本搜索的反向索引的信息。
在查询此表之前,请将配置变量innodb_ft_aux_table
设置为包含FULLTEXT索引的表的名称(包括数据库名称),例如test/articles
。
有关相关用法信息和示例,请参见“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”。
INNODB_FT_INDEX_TABLE
表包含以下列:
- WORD :从作为FULLTEXT一部分的列的文本中提取的单词。
- FIRST_DOC_ID:此单词出现在FULLTEXT索引中的第一个文档ID。
- LAST_DOC_ID :此单词出现在FULLTEXT索引中的最后一个文档ID。
- DOC_COUNT :此单词出现在FULLTEXT索引中的行数。在缓存表中可以多次出现相同的单词,对于DOC_ID和POSITION值的每个组合一次。
- DOC_ID :包含单词的行的文档ID。此值可能反映您为基础表定义的ID列的值,或者它可以是InnoDB在表不包含合适的列时生成的序列值。
- POSITION :由DOC_ID值标识的相关文档中该单词的该特定实例的位置。
Notes
- 此表最初显示为空,直到您设置配置变量innodb_ft_aux_table的值。 以下示例演示如何使用innodb_ft_aux_table选项显示有关指定表的FULLTEXT索引的信息。 在INNODB_FT_INDEX_TABLE中出现新插入行的信息之前,必须将FULLTEXT索引缓存刷新到磁盘。 这是通过使用
innodb_optimize_fulltext_only = ON
在索引表上运行OPTIMIZE 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 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 ...');
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 |
+---------------+----------+----------+----------+
mysql> SET GLOBAL innodb_ft_aux_table = 'test/articles';
Query OK, 0 rows affected (0.00 sec)
mysql> USE INFORMATION_SCHEMA;
mysql> SELECT word, doc_count, doc_id, position FROM INNODB_FT_INDEX_TABLE 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 FULLTEXT搜索的更多信息,请参见“InnoDB FULLTEXT索引”和“全文搜索函数”。