`
jeafyezheng
  • 浏览: 101761 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

如何把索引放在内存中提供查询服务

阅读更多

200W以下的数据量全部加载到内存最简单的方式是修改Lucene1.9版本)源码 org.apache.lucene.index.IndexReader文件的第127 
return open(FSDirectory.getDirectory(path, false), true);
修改为
return open(new RAMDirectory(FSDirectory.getDirectory(path, false)), true);

133行的 
return open(FSDirectory.getDirectory(path, false), true);
修改为
return open(new RAMDirectory( FSDirectory.getDirectory(path, false)), true);
这样就可以在查询的时候将所有索引一次加载到内存,查询响应时间即使是第一次查询,也会小于0.1秒,但仅适用于索引文档数量不超过200W个,并且平均的页面大小不超过10K,文献检索系统 ,这种方式尤其适合。
创建索引的时候也能够使用 RAMDirectory  FSDirectory 要快很多 

<o:p> </o:p>

令一种方法:

           FSDirectory directory = FSDirectory.getDirectory(args[0], false);   1<o:p></o:p>

       RAMDirectory directory = new RAMDirectory(args[0]);                    2<o:p></o:p>

    2代替1即可

 
分享到:
评论

相关推荐

    MySQL索引原理及慢查询优化1

    预读技术是在预期用户将需要的数据之前加载到内存中,以减少等待磁盘IO的时间。了解磁盘的寻道时间、旋转延迟和传输时间,可以帮助我们更好地设计数据库架构和索引策略。 6. **索引的维护与选择** 虽然索引能提高...

    mysql,查询,索引

    1. **最左前缀匹配原则**:创建复合索引时,应考虑按查询中出现频率最高的列放在最前面。 2. **=和IN可以乱序**:如果查询条件中有`=`和`IN`操作符,则可以改变它们的顺序而不影响索引的使用。 3. **尽量选择区分度...

    尚硅谷mysql高级:索引、优化

    对于经常变化的列,避免放在索引中。 7. 使用EXPLAIN分析查询:理解查询执行计划,检查是否使用了索引,是否存在全表扫描等问题。 8. 触发器和存储过程:虽然可以简化代码,但过度使用可能降低性能。谨慎使用,...

    详解SQL数据库索引原理

    非聚集索引不改变表中记录的物理顺序,而是在内存中创建一个独立的结构,其中包含索引键值和指向实际数据行的指针。一个表可以有多个非聚集索引,它们不会影响数据的物理存储方式。非聚集索引适用于需要快速查找单个...

    Mysql索引优化实战.zip

    物化视图则是在内存或磁盘中预先计算并存储的查询结果,用于快速提供常见查询的答案。 通过深入学习和实践“Mysql索引优化实战”中的内容,开发者和数据库管理员可以更好地理解索引的工作原理,从而制定出更有效的...

    Oracle解决索引碎片功能.txt

    2. **表空间选择**:通过指定`TABLESPACE name`,可以将重建后的索引放在不同的表空间中,这有助于管理和优化存储资源。 3. **性能影响**:尽管在线重建可以在一定程度上减少对现有业务的影响,但在重建过程中仍可能...

    SQL Server索引效率分析.pdf

    理想情况下,包含唯一性高的字段应当放在前面,这样在进行索引扫描时,IO成本会更低,从而减少查询时间。创建覆盖索引时,索引叶子节点应该包含所有查询所需的列。这样,查询操作无需访问数据表,直接通过索引就能...

    K3数据库索引及系统性能优化解决方案(具体应用篇)

    - `DBCC SHOW_STATISTICS`:提供表或索引的统计信息,这些信息被SQL Server查询优化器用于查询计划的生成。例如,`DBCC SHOW_STATISTICs('t_item','pk_item')`显示t_item表的pk_item索引的统计信息。 - `sp_...

    MySQL索引背后的数据结构及算法原理.pdf

    如果数据结构过大无法全部放在内存中,数据库系统会使用缓存策略,将经常访问的数据部分保持在内存中。 ### MyISAM与InnoDB存储引擎 MyISAM和InnoDB是MySQL中最常用的两个存储引擎,它们对索引的实现略有不同: - ...

    SQL语法、索引优化

    2. **复合索引**:对于多个列的查询,创建复合索引可以提高查询效率,但需注意索引列的顺序,通常应将筛选条件频率高且区分度大的列放在前面。 3. **覆盖索引**:如果查询只需要索引中的数据,覆盖索引可以避免回表...

    SQL Server数据库查询速度慢原因及优化方法

    如果另外安装了全文检索功能,并打算运行Microsoft搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的3倍。将SQL Server max server memory服务器配置选项配置为物理内存...

    基本索引原理PPT学习教案.pptx

    组合索引包含多个列,选择性高的列应放在索引前面,以优化查询性能。在Oracle 9i之前,查询必须匹配索引的第一列。现在,即使不提供第一列的值,数据库也可能使用跳跃式扫描。 评估索引对DML性能的影响至关重要。...

    mysql面试题,以及经典的索引问题详解

    8. **复合索引**:如果一个查询涉及多个列,可以创建复合索引,注意列的顺序很重要,应将选择性高的列放在前面。 9. **索引优化**:定期分析`EXPLAIN`计划,检查索引的使用情况,优化查询语句或调整索引策略。 此外...

    MySQL索引及其原理1

    MySQL索引是数据库管理系统中用于加速数据检索的关键技术。它基于特定的数据结构,如B+树,以提高查询效率,避免全表扫描。在本文中,我们将深入理解MySQL索引的定义、类型、原理以及如何在实践中有效利用它们。 1....

    应用索引技术优化SQL语句.pdf

    索引在数据库系统中扮演着至关重要的角色,它不仅能够加快查询速度,还能减少磁盘I/O操作,从而提高整个系统的性能。因此,对那些没有索引或索引不当的SQL语句进行优化是提升性能的首要任务。 在索引技术的应用中,...

    MYSQL用什么样的格式存储数据、索引的?它们被放在哪里了?

    - **扫描区间和边界条件**:在 SQL 查询中,合理的索引选择可以显著提高查询性能。例如,在查询 `SELECT * FROM t1 WHERE id &gt; 2 AND id ;` 中,MySQL 会根据边界条件推断出扫描区间,从而优化查询过程。 #### 三、...

    MySQL索引原理及慢查询优化

    在这种情况下,由于`operate_time`通常用于范围查询,应该放在索引的最前列,接着是其他条件字段,如`status`, `operator_id` 和 `type`,根据它们在查询中的出现频率和选择性进行排列。 索引的维护和使用策略也是...

Global site tag (gtag.js) - Google Analytics