但数据库正在迅速变大,很快我担心数据库会如此之大,以至于无法在1小时内完成这个过程。当然我每2小时只运行一次,但这并不理想。
现在我的问题:每次脚本运行时sphinx是重建整个索引,还是仅添加最近添加到数据库中的最新项目(自上次运行索引以来)?< / p>
我的感觉是,它完全重建了它。
如果这是真的,是否也可以只有已经没有的物品?这会使索引时间缩短很多吗?
答案 0 :(得分:2)
请参阅Delta索引更新:http://sphinxsearch.com/docs/current.html#delta-updates
我们的想法是维护两个指标:主要和 delta 。您只需要将新添加/更新内容的索引构建到 delta 索引中,并定期合并回 main 索引。
答案 1 :(得分:0)
拆分索引
如果您可以轻松识别新的/更新的行,那么main和delta是最常规的。
如果不拆分可以让你同时重新索引许多“部件”。
索引为180M(随机更新),其中我每小时平均有5K新行。
我的解决方案是
22个部分索引(因为服务器中有24个核心) 20个部分指数等于 2“delta”指数
通过脚本我使用此规则计算每个部分的开始和结束ID
last delta =从今天创建的第一个ID开始 其他delta =从昨天创建的第一个id开始,今天创建第一个id
对于部分索引,它基本上基于
最后一个delta在几秒钟后重建, 20个第一个区块在10分钟内建成
之前,使用monolitic版本,整个索引在4小时内重建(但只有90M行和sphinx 0.9.9)