【问题标题】:ERROR 188 (HY000): FTS query exceeds result cache limit mysqlERROR 188 (HY000): FTS 查询超出结果缓存限制 mysql
【发布时间】:2018-02-20 16:43:35
【问题描述】:

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

表结构:

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;

我尝试搜索:

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)

这会引发以下错误:

ERROR 188 (HY000): FTS query exceeds result cache limit

Google 说这是 mysql 在 5.7 中修复的错误。我正在使用 5.7.19。 任何想法如何解决这个问题。 复制粘贴 ft 变量:

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)

【问题讨论】:

    标签: mysql indexing full-text-search


    【解决方案1】:

    在向一个巨大的表(1000 万行)中的text 列添加全文索引后,我遇到了这个问题。 以前我通过重新启动服务器解决了这个问题,但现在我无法重新启动它,因为它正在执行一些计算。

    通过调整此设置解决了这个问题(比默认设置多 2 倍):

    SET GLOBAL innodb_ft_result_cache_limit = 4000000000;
    

    【讨论】:

      猜你喜欢
      • 2013-08-24
      • 2016-11-03
      • 2011-03-24
      • 1970-01-01
      • 2017-11-02
      • 2018-04-13
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      相关资源
      最近更新 更多