2010-12-18 163 views
0

我应该怎么做才能加快狮身人面像索引(使用MySQL)? 我应该使用其他数据库,noSQL数据库吗?狮身人面像重建索引需要几个小时

请注意,增量索引速度很快,只有完全reindeinx过程很慢。 请详细解释。谢谢!

更新: 我重新索引超过10万项,我的思想,狮身人面像索引定义是这样的

define_index do 
    indexes [text, user(:nickname), user(:full_name)] 
    has rewrites(:id), :as => :rewrite_id 
    has rewrites(:user_id), :as => :rewrite_user_id 
    has [rewrites(:user_id), user_id], :as => :user_id_or_rewrites_user_id 
    has comments(:user_id), :as => :comments_user_id 
    has simbols(:id), :as => :simbol_ids 
    has followings(:follower_id), :as => :follower_id 
    has follows(:followable_id), :as => :followable_id 
    has created_at, :sortable => true 
    has rewrites_count, :sortable => true 
    has relevance, :sortable => true 
    has user_id 
    set_property :delta => :datetime 
    end 
+0

请提供一些细节。您索引了多少项目?在哪里花费大部分时间索引?你有日志输出吗?我已经为成千上万篇带有多个索引字段的文章编制了索引,通常需要几分钟的时间。 – Todd 2010-12-18 22:39:40

+0

@Todd:我刚刚更新了我的问题。 – xpepermint 2010-12-18 22:48:36

+0

您是否试图确定大部分加工过程在哪里进行?如果它在mysql中,可能需要更好地索引表。也许尝试手动运行狮身人面像正在使用的查询,看看它是如何做的。我倾向于说这可以加快。我只是在10k +记录上重新获得了一个完整的索引,并且耗时<1分钟。 – Todd 2010-12-18 23:15:42

回答

1

构建一个完整的索引是缓慢的。有多慢?

构建增量索引很快。

这听起来很正常,根据我的经验。

noSQL数据库(最后听说@Rails 2.3.5)很难与Rails集成。没有SQL速度取决于你的数据集和关系。

没有更多的信息,这听起来很正常。

== ==编辑

确保您有

created_at 
rewrites_count 
relevance 

SQL指标除了你的主键自然。

+0

Shur ...我知道这很正常,但是做什么应该是更好的方法? – xpepermint 2010-12-18 22:49:30

+0

是的......我的数据库列有索引。 – xpepermint 2010-12-18 22:58:22

+0

@xpepermint你知道这个过程是IO还是CPU绑定?如果我正确记得它的多线程并且IO绑定了我的应用程序。如果IO绑定,则将硬件放在它上面。 – EnabrenTane 2010-12-18 23:00:47

0

如何使用实时指数(带调整合适的内存限制)

+0

哼......你能举个例子吗? – xpepermint 2010-12-22 10:04:31

+0

http://sphinxsearch.com/docs/current。html#rt-indexes – dmytrivv 2010-12-22 13:32:39

+0

实时索引(或简称为RT索引)是一个新的后端,允许您即时插入,更新或删除文档(行)。 – dmytrivv 2010-12-22 21:46:55

1

当thinking_sphinx工作总是看它产生的真正的狮身人面像配置文件中的SQL。针对运行的所有查询运行查询分析器。我发现你也可以操纵查询。

也为一对多的关系中,你可能需要补充一点:

:源=>:ranged_query

这将导致狮身人面像使用一个单独的查询,收集孩子们,而不是外部联接。在很多情况下,速度要快得多。