序事簿_F7模糊搜索
背景
序事簿/F7模糊搜索功能原来是通过DB中SQL语言的like关键字实现的,当表中的数据量很大时,会出现以下2个比较大的瓶颈:
搜索响应时间慢,每次查询需要时间很久,用户体验差
like需要全表扫描,DB压力大,可能会影响到别的正常的SQL操作
模糊搜索通过ElasticSearch实现,可以有效的解决上述问题
特性介绍
搜索响应时间提高
数据库负载降低
具体数据参考以下【性能测试报告】部分
流程设计
当指定要搜索的实体表数据发生增删改时,ORM会更新数据库
更新数据库的同时,把消息写入RabbitMQ
DTS监听并消费数据变化的消息
DTS把收到的消息更新到ElasticSearch中,完成数据同步
当用户使用序事簿/F7做模糊搜索时,直接通过搜索ElasticSearch
MC参数配置
# 是否开启ES全文搜索模糊搜索功能,默认false fuzzynf7.query.fulltext=true
由于该功能依赖dts数据同步,故以下参数必须开启才能生效
# 启动数据同步 data.sync.enable=true # 启动数据同步查询 data.sync.query.enable=true # 关闭DB全文索引 db.fulltext.fields=false
实体配置
需要ES全文索引搜索的实体,通过页面配置生效
1. 搜索实体配置列表
2. 新增搜索实体配置
3. 当搜索实体保存成功后,数据同步实体列表也会同步增加一条记录
部署建议
此功能的ElasticSearch部署需要和ELK的分开,独立部署
问题定位
如果出现数据同步的问题,可以通过查看日志定位问题
性能测试报告
第一次测试
数据量 | 查DB | 查ES | 性能提高 |
---|---|---|---|
物料数据10w | 点击率:44.7 模糊搜索响应时间:0.325 F7过滤搜索响应时间:0.232 | 点击率:42.3 模糊搜索响应时间:0.255 F7过滤搜索响应时间:0.107 | 72% |
物料数据100w | 点击率:6.8 模糊搜索响应时间:9.868 F7过滤搜索响应时间:4.767 | 点击率:6.9 模糊搜索响应时间:4.731 F7过滤搜索响应时间:2.982 | 84% |
第二次测试
重新构造测试用例,只做模糊搜索和F7查询
添加1000w数据测试数据对比
添加cpu使用率比较
1000w数据去掉了过滤搜索用例,只测试模糊搜索
数据量 | 查DB | 查ES | 性能提高 |
---|---|---|---|
物料数据10w | CPU使用率:4.9% 点击率:41 模糊搜索响应时间:0.266 F7过滤搜索响应时间:0.235 | CPU使用率:0.67% 点击率:42 模糊搜索响应时间:0.083 F7过滤搜索响应时间:0.127 | 1.53倍 |
物料数据100w | CPU使用率:43% 点击率:29 模糊搜索响应时间:2.802 F7过滤搜索响应时间:1.87 | CPU使用率:1.67% 点击率:41 模糊搜索响应时间:0.159 F7过滤搜索响应时间:0.151 | 14倍 |
物料数据1000w | CPU使用率:85.1% 点击率:10 模糊搜索响应时间:35.772 F7过滤搜索响应时间: 未测试,打开物料页面要1min以上 | CPU使用率:3.27% 点击率:70 模糊搜索响应时间:0.29 F7过滤搜索响应时间: 未测试,打开物料页面要1min以上 | 122倍 |
序事簿_F7模糊搜索
背景序事簿/F7模糊搜索功能原来是通过DB中SQL语言的like关键字实现的,当表中的数据量很大时,会出现以下2个比较大的瓶颈:搜索响应时间慢...
点击下载文档
本文2024-09-23 00:28:19发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139676.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章