首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误188 (HY000):FTS查询超过结果缓存限制mysql

错误188 (HY000):FTS查询超过结果缓存限制mysql
EN

Stack Overflow用户
提问于 2017-09-12 17:24:03
回答 1查看 1.5K关注 0票数 6

我在我的表的text列上有大约1100万行的全文索引。

表结构:

代码语言:javascript
运行
复制
CREATE TABLE `review` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `comments` text COLLATE utf8mb4_unicode_ci,
  `title` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `reviewer_id` (`reviewer_id`),
  FULLTEXT KEY `comments` (`comments`)
) ENGINE=InnoDB AUTO_INCREMENT=273001866 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED;

我试着像这样搜索:

代码语言:javascript
运行
复制
SELECT 
    id
FROM
    review
WHERE  MATCH (comments) AGAINST ('"This is review is only for Campus tours and not for University itself as no one can write a review on University"' IN BOOLEAN MODE)

这将抛出以下错误:

代码语言:javascript
运行
复制
ERROR 188 (HY000): FTS query exceeds result cache limit

谷歌表示,这是一个错误,mysql在5.7中已经修复了这个错误。我使用的是5.7.19。有没有办法解决这个问题。复制粘贴ft变量:

代码语言:javascript
运行
复制
mysql> show global variables like 'innodb_ft%';
+---------------------------------+--------------------+
| Variable_name                   | Value              |
+---------------------------------+--------------------+
| innodb_ft_aux_table             |                    |
| innodb_ft_cache_size            | 8000000            |
| innodb_ft_enable_diag_print     | OFF                |
| innodb_ft_enable_stopword       | ON                 |
| innodb_ft_max_token_size        | 84                 |
| innodb_ft_min_token_size        | 3                  |
| innodb_ft_num_word_optimize     | 2000               |
| innodb_ft_result_cache_limit    | 2000000000         |
| innodb_ft_server_stopword_table | local/my_stopwords |
| innodb_ft_sort_pll_degree       | 2                  |
| innodb_ft_total_cache_size      | 640000000          |
| innodb_ft_user_stopword_table   |                    |
+---------------------------------+--------------------+
12 rows in set (0.00 sec)
EN

回答 1

Stack Overflow用户

发布于 2019-10-23 13:46:59

在向大型表(10mln行)中的text列添加全文索引后,我遇到过这个问题。以前我通过重启服务器来解决这个问题,但现在我不能重启它,因为它正在执行一些计算。

通过调整此设置(超过默认值的2倍)解决了此问题:

代码语言:javascript
运行
复制
SET GLOBAL innodb_ft_result_cache_limit = 4000000000;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46172668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档