You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行SELECT查询致MySQL服务器崩溃问题排查求助

问题背景

在.NET MVC Web应用中,执行以下SELECT查询时,偶尔会导致MySQL服务器直接宕机:

SELECT  ID,  Headline,  Intro_Plaintext, CategoryList, PublishedDate,
MATCH( Headline,  Standfirst_Plaintext,  Intro_Plaintext,  Storytext_PlainText, CategoryList)
    AGAINST('kyeword 2022' IN NATURAL LANGUAGE MODE) Score, Brand_ID, Type_Name
FROM index_articles WHERE MATCH(Headline, Standfirst_Plaintext, Intro_Plaintext, Storytext_PlainText, CategoryList)
    AGAINST('kyeword 2022' IN NATURAL LANGUAGE MODE) AND NOT ISNULL(Brand_ID)

涉及的index_articles表约有100万条记录且持续增长,建表语句如下:

CREATE TABLE `index_articles` (
  `index_articles_id` int NOT NULL AUTO_INCREMENT,
  `Brand_ID` int DEFAULT '0',
  `ID` int DEFAULT '0',
  `Headline` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `Standfirst_Plaintext` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `Intro_Plaintext` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `Storytext_PlainText` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `CategoryList` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `Type_Name` varchar(250) NOT NULL DEFAULT '',
  `PublishedDate` datetime NOT NULL,
  `UNIXPubDate` int NOT NULL DEFAULT '0',
  PRIMARY KEY (`index_articles_id`) USING BTREE,
  UNIQUE KEY `UNIQUE` (`index_articles_id`) USING BTREE,
  UNIQUE KEY `DUPLICATE` (`Brand_ID`,`ID`) USING BTREE,
  KEY `PublishedDateDESC` (`UNIXPubDate` DESC) USING BTREE,
  FULLTEXT KEY `FullTextSearch` (`Headline`,`Standfirst_Plaintext`,`Intro_Plaintext`,`Storytext_PlainText`,`CategoryList`)
) ENGINE=InnoDB AUTO_INCREMENT=237353 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

MySQL服务器错误日志核心信息:

[InnoDB] Assertion failure: fts0que.cc:3270:ret == 0 thread 9740
InnoDB: We intentionally generate a memory trap.
...
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
...
Query (1c5a391f238): [上述SELECT语句]

问题疑问

该问题由何原因导致?是否为MySQL服务器配置问题?为何仅偶尔发生?


原因分析与结论
  1. 核心原因:InnoDB全文搜索模块Bug
    错误日志明确指向InnoDB全文搜索(FTS)组件的fts0que.cc文件第3270行断言失败,这属于MySQL代码层面的内部错误,而非常规配置问题。这类偶发宕机往往是特定查询场景、数据特征或并发操作的组合触发了隐藏Bug。

  2. 排除配置问题的依据

    • 查询使用了正确的全文索引,表结构与索引定义无明显逻辑错误;
    • 配置问题通常会导致持续性能异常或可复现的错误,而非偶发的服务器崩溃;
    • 官方日志提示已明确此类断言失败大概率是Bug,而非配置问题。
  3. 偶发触发的可能诱因

    • 特定关键词组合(比如包含数字、特殊格式的词汇);
    • 表持续增长时,写入操作与全文搜索查询并发执行,触发了Bug;
    • 数据中存在特殊格式的文本内容,导致全文搜索解析时出现异常。

解决方案建议
  • 升级MySQL版本:这类InnoDB FTS的特定Bug通常会在后续版本中修复,建议升级到当前大版本的最新稳定版;
  • 临时规避:暂时无法升级时,可调整查询逻辑,比如先用子查询获取全文搜索结果,再过滤NOT ISNULL(Brand_ID),避免优化器生成触发Bug的执行计划;
  • 硬件排查:低概率情况下,服务器内存、磁盘硬件故障也可能引发此类异常,可排查内存错误、磁盘坏道等问题;
  • 提交Bug报告:若升级后问题仍存在,可整理复现步骤、表结构、样本数据提交给官方,帮助定位修复。

内容的提问来源于stack exchange,提问作者Sebastian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:15:52