gpt4 book ai didi

mysql - 如何在 Rails 3 应用程序中实现更快的 Search As You Type (SAYT) api

转载 作者:可可西里 更新时间:2023-11-01 06:30:39 25 4
gpt4 key购买 nike

我的 mysql 数据库中有数百万条记录。我在 Rails 3 中为 iPhone 应用程序实现了一个普通的 REST api,但是 SAYT 功能响应真的很慢。搜索数据库并返回结果需要花费大量时间。我怎样才能提高性能?

我已经为我的表格编制了索引。我应该更多地关注哪些方面,比如 MySQL 调优,或者我应该使用 rails sphinx 还是 sunspot?这有帮助请帮助我提供所有专家建议。

最佳答案

我同意一般的回答:使用像 Sphinx 这样的搜索引擎(并限制返回结果的数量);它们旨在完全满足您的需求。

但是,虽然数百万条记录听起来很多,但您应该首先确定什么花费了很长时间。我非常喜欢 Sphinx 和 ThinkingSphinx——他们把一个相当复杂的过程变得非常简单和容易。但是,归根结底,搜索引擎是另一个需要管理、配置、学习和了解的系统。如果您不必去那里,不去会更容易,对吧?

可能是查询,也可能是返回数据所花费的时间(limit 是你的 friend !)。或者可能是您每秒收到数百个请求,这可能是因为自动完成的延迟太——如果查找每个字符,快速打字员或多个用户可以轻松使用不为用户提供任何实用程序的查询使服务器溢出。

查看 Rails 日志,看看到底发生了什么。如果这是一个简单的查询性能问题,进行复杂的全文搜索,那么,是的,这会很慢,而 Sphinx 将值得付出努力。您的数据库有一个explain 工具,通过一些工作,它可以帮助您了解数据库为获得结果所做的工作。不使用索引的情况并不少见。

缓存呢? Memcached 是一个很棒的工具。或者甚至可能只是您的数据库缓冲区大小设置可以允许它使用更多内存进行缓存。

关于mysql - 如何在 Rails 3 应用程序中实现更快的 Search As You Type (SAYT) api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9426254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com