来自javascript实时搜索的mysql内存负载
-
28-10-2019 - |
题
我正在通过文本框进行实时搜索,当用户键入文本框时,它将从mysql数据库返回匹配的行。问题是这是站点的主要功能之一,确实增加了我的mysql数据库的内存负载。因为每个按键都会向php脚本发送请求以查询数据库。
我让php忽略了所有少于3个字符的搜索词,但是除此之外我还能做什么?
这里有一些选项: JavaScript中的实时搜索优化
但是我想知道是否应该从缓存的xml表中提取信息,或者是否有某种方式可以缓存mysql本身。
google或其他严重依赖此功能的大型网站有什么作用?
解决方案
我会尝试尽可能优化SQL查询:
- 没有选择*
- 没有加入
- 仅在索引字段中使用WHERE
此外,在PHP方面:
- 在纯文本文件中缓存最频繁搜索的词(更频繁地更新搜索数据,缓存寿命越短)的搜索结果
- 使用redis,如果可能的话,使用memcached
另外,考虑一个并行的NoSQL数据库
和
Zend_Search_Lucene非常适合中低流量的网站(据称在扩展时会出现问题)
其他提示
使用索引引擎来索引您的数据并加快搜索结果的速度。 像: http://sphinxsearch.com/ 或 http://lucene.apache.org/core/
设置cron作业以索引数据,有用于sphinx的PHP API和Zend Framework Module。如果正确使用,索引速度会很快。
不隶属于 StackOverflow