使用rails选择什么数据库。大数据库

时间:2012-06-09 18:10:24

标签: mysql ruby-on-rails database optimization

我正在使用非常大的数据库,一些表有超过30.000.000个条目,现在我正在使用mysql,但对于一些搜索查询我必须等待超过1-2分钟。是否有提高速度的方法?此外,是不是任何其他数据库,谁会更快?另外,在铁轨中使用什么?现在我使用简单的%like%,是否可以通过某些字段进行搜索?

3 个答案:

答案 0 :(得分:5)

使用%LIKE%进行全文搜索并使用那么多行不会产生性能。我强烈建议使用类似Sphinx和优秀ThinkingSphinx宝石的东西。它适用于MySQL和Rails / ActiveRecord开箱即用,配置很简单。

This指南介绍了如何将Sphinx搜索守护程序安装到特定平台上。

This指南介绍了如何安装和使用thinking-sphinx gem。 (请注意,Rails 2和3具有不同的安装指南,因此请确保遵循正确的安装指南。)

安装后,您可以在您要搜索的模型的列上定义索引。

Ryan Bates使用ThinkingSphinx进行全文搜索Railscasts episode,这是一个很好的开始。

快乐的编码!

答案 1 :(得分:1)

如果你想坚持使用mysql,那么请使用myisam。

提出一种智能创建索引的策略。

战略性地预先计算复杂的结果。

仅返回您需要的数据。

将db的部分规范化为incr perf。

使用许多从属设备来读取

将db拆分为多个dbs

你需要经常测试。

答案 2 :(得分:1)

按照%

的百分比

我遇到了类似的情况,我使用LIKE外卡搜索一张大桌子,时间为3,4分钟。我能够通过索引列并使用MATCH()来解决一些问题。如果您需要准确性,这可能不适用于您的情况。

参考http://dev.mysql.com/doc/refman//5.5/en/fulltext-search.html

  

作为注意:我正在使用搜索和匹配的组合,你可以看到   这里http://anotherfeed.com/feedmap.php?search=facebook前50名   结果返回LIKE,最后50返回MATCH并显示php   索引得分为mysql。前50个总是更准确,因为我只是索引标题而不是完整描述。

$query2="SELECT *, MATCH(pagename) AGAINST('".urldecode($_REQUEST['search'])."') AS score FROM anotherfeedv3.af_freefeed WHERE MATCH(pagename) AGAINST('".urldecode($_REQUEST['search'])."') LIMIT $start, $limit";