mysql - MySQL - N-Gram 解析器导致 CPU 使用率高
问题描述
我们有一个网站,它的数据库在 AWS RDS 上运行。
对于站点搜索功能,innodb 表上只有一个 FULLTEXT 索引。
我们的大部分数据都包含 CJK 字符,由于默认解析器的行为不适合 CJK 字符,即使我们设置innodb_ft_min_token_size
为 1,我们想更改为使用 N-Gram 解析器。
使用 N-Gram 解析器,FULLTEXT 搜索结果比以前更好。但是CPU使用率一直处于高位(70%以上),很容易导致RDS服务器无响应。这是示例图像之一。 此外,有时它会一直停留在 99% 的使用率,并很快导致 RDS 服务器停机。
我曾经show processlist
检查过正在运行的线程,但是我们网站的流量很少。只有几个查询,也不复杂。
如果我们在没有 N-Gram 解析器的情况下构建 FULLTEXT 索引,CPU 利用率稳定在 5% 到 20% 的范围内。一切都会好起来的,只是搜索结果不尽如人意。
这个问题有什么解决方案吗?
解决方案
推荐阅读
- discord.js - 如何在没有命令召唤的情况下设置权限?
- python - Python3读取文件并将具有int值的二维数组放置一行
- reactjs - nextjs:_app.js 在包装组件之前渲染子组件(异步反应上下文依赖于索引数据库浏览器存储)
- python - Django Rest 框架:登录
- c# - ASP.NET Core 3.1 默认身份验证如何工作?
- python - Numpy 数组相等布尔值
- rxjs - 将项目升级到 Angular 8
- python - Plotly:如何为 plotly 直方图自定义不同的 bin 宽度?
- python-3.x - 无法为系统范围的 python 3 模块安装导入模块
- regex - 提取特定字符之间的文本