我有一小部分查询和实体,即使性能很差,我只是想知道我可以采取哪些技巧和配置来提高性能?
注意我使用的是 Solr 4.1。
您应该尽量减少导入期间的提交次数。即使您在向 Solr 添加文档时不定期提交,Solr 也会根据 solrconfig.xml autoCommit 设置进行自动提交:
<autoCommit>
<maxDocs>10000</maxDocs>
<maxTime>15000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
增加两者maxDocs
,maxTime
看看你是否获得更好的速度。(maxTime
以毫秒为单位,因此默认设置仅为 15 秒,这对于批量导入来说非常低。)
您甚至可以尝试在批量导入期间禁用自动提交,并在添加所有文档后发出一个提交命令。如果这不会从 Solr 引发内存不足异常,那么这是您可以获得的最佳速度。
如果您正在执行 RDBMS 导入,那么我会建议使用 JOIN 捕获尽可能多的字段并最大限度地减少子实体的数量,因为每个子实体都会打开与数据库的单独连接。由于您是从 mongo 导入的,因此这不适用于您。您可以通过使用 Solr 所需的所有数据创建一个新的 mongo 集合来进行试验,在数据导入器中保留一个实体,看看它是否提高了导入速度。