Infinispan - 使用索引加载数据非常慢。可以加快速度吗?

时间:2012-04-10 14:07:52

标签: java jboss lucene hibernate-search infinispan

  • 我正在尝试使用Infinispan缓存来将Java对象存储在仅本地缓存模式中。
  • 我想查询两个键以及一些字段。所以我使用的是Infinispan的查询/索引模块。
  • 在索引字段上查找性能非常好。但是,与没有索引的情况相比,加载缓存中的所有项目需要花费大量时间。
  • e.g。对于大约50k个对象,使用Indexing Infinispan花费10分钟来加载缓存中的项目。没有索引,只需2秒。
  • 我想知道Infinispan在索引之后是否会这么慢,或者我是否做了一些非常错误的事情。
Configuration infinispanConfiguration = new ConfigurationBuilder()
      .indexing()
         .enable()
         .indexLocalOnly(true)
      .build();

DefaultCacheManager cacheManager = new DefaultCacheManager(infinispanConfiguration)

    @Indexed @ProvidedId
    public class Book {
       @Field String title;
       @Field String description;
       @Field String author;
       @Field int yearOfPublication ;
       String briefDescription;
       int edition;
       boolean isBestSeller;
    }

2 个答案:

答案 0 :(得分:2)

如您所知Infinispan使用Hibernate Search&使用索引模块时的Apache Lucene。

根据您的配置,您使用Lucene索引的默认值。您可以指定许多选项来提高索引性能。

您可以参考以下内容获取更多信息

[1] https://docs.jboss.org/author/display/ISPN/Querying+Infinispan [2] http://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#lucene-indexing-performance

答案 1 :(得分:0)

我遇到了同样的问题。

25000本书的插入(来自Infinispan用户指南)耗时361秒

ConfigurationBuilder config = new ConfigurationBuilder();
config.indexing().index(Index.LOCAL);

25000本书的插入需要1.6秒

ConfigurationBuilder config = new ConfigurationBuilder().indexing().setProperty("default.directory_provider", "ram").setProperty("default.indexmanager", "near-real-time");
config.indexing().index(Index.LOCAL);