首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型数据集的MySQL和Memcached?

问大型数据集的MySQL和Memcached?
EN

Stack Overflow用户
提问于 2012-08-04 22:07:54
回答 1查看 1.6K关注 0票数 0

对于一个客户,我目前正在研究他们数据库结构的改进。

我的客户在他们的网站上提供假日租赁服务。在他们的首页上,他们有一个搜索功能,该功能将查询发送到MySQL数据库体系结构(主-主设置),该体系结构用客户感兴趣的所有假日租赁来回答该查询。

由于公司的发展和服务器上不断增加的负载,搜索查询目前已经达到了10+秒。主要是因为查询以ORDER BY结尾,这会导致MySQL创建一个临时表并对所有数据进行排序,因此平均一个搜索查询可以返回多达20k个度假屋。当然,我们正在做的一件事是调查查询,重写它们,并在需要的地方放置索引。不幸的是,在这种情况下,我们无法分配更多的性能。这就是为什么我们正在研究在MySQL之上实现Memcached,以便在内存中缓存这些大型数据集,以便更快地检索。不幸的是,查询返回的数据集非常大,这使得Memcached在这一点上并不那么有效。MySQL返回的数组目前大约是15k行,每行大约有60个值。Memcached之所以有趣,是因为我们希望极大地改进搜索功能,并降低MySQL平台上的负载。这将使其更具可伸缩性。

我想知道是否有人熟悉在Memcached中(长期)缓存MySQL数据,并使其对大型数据集更有效?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-04 22:57:35

Memcache是用来存储键值对的,而不是用来存储大数据集的。它会起作用吗?是。当然会的。但是,考虑到你们将要处理的数据量,你很快就会耗尽内存,最终还是会访问数据库,因为你的搜索结果可能会改变一次。记住,仅仅因为它的memcache并不意味着它不需要通过web套接字访问(最有可能的)不同的机器。你的问题似乎是,你正在使用MySQL做一些它从来没有设计好的事情,那就是将它用作搜索引擎。不管你优化了多少东西,你所做的就是一次把天花板抬高一英寸。

我可以按照“你需要优化MySQL参数,这样它就不需要创建那些临时表”的方向来写这篇文章,但我假设你已经研究过了,并继续写下去。

我的建议是在MySQL之上实现一些东西来处理搜索。在我自己对快速搜索的追求中,以下是我最看重的解决方案:

斯芬克斯:http://sphinxsearch.com

Solr:http://lucene.apache.org/solr

弹性搜索:http://www.elasticsearch.org

你会在StackOverflow上找到大量的资源,这些资源中哪些更好,哪些更快,还有什么不好。出于我们的目的,我们为一个项目选择了Elasticsearch,为另一个项目选择了Solr。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11809266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档