###索引的维护

对于CTXSYS.CONTEXT索引,当应用程序对基表进行DML操作后,对基表的索引维护是必须的。索引维护包括索引同步和索引优化。

在索引建好后,我们可以在该用户下查到Oracle自动产生了以下几个表:(假设索引名为myindex):
DRmyindexmyindexmyindexI、DRmyindexmyindexmyindexK、DRmyindexmyindexmyindexR、DRmyindexmyindexmyindexN其中以I表最重要,可以查询一下该表,看看有什么内容:
SELECT token_text, token_count FROM drirsk1i_rsk1ir​sk1I WHERE ROWNUM <= 20;
这里就不列出查询接过了。可以看到,该表中保存的其实就是Oracle 分析你的文档后,生成的term记录在这里,包括term出现的位置、次数、hash值等。当文档的内容改变后,可以想见这个I表的内容也应该相应改变,才能保证Oracle在做全文检索时正确检索到内容(因为所谓全文检索,其实核心就是查询这个表)。这就用到sync(同步) 和 optimize(优化)了。

同步(sync):将新的term 保存到I表

优化(optimize): 清除I表的垃圾,主要是将已经被删除的term从I表删除

当基表中的被索引文档发生insert、update、delete操作的时候,基表的改变并不能马上影响到索引上直到同步索引。

####同步和优化方法: 可以使用Oracle提供的ctx_ddl包同步和优化索引

  • 同步:

在对基表插入,修改,删除之后同步索引。推荐使用sync同步索引。语法:

ctx_ddl.sync_index(
idx_name IN VARCHAR2 DEFAULT NULL
memory IN VARCHAR2 DEFAULT NULL,
part_name IN VARCHAR2 DEFAULT NULL
parallel_degree IN NUMBER DEFAULT 1);
  • idx_name   索引名称
  • memory    指定同步索引需要的内存。默认是系统参数DEFAULT_INDEX_MEMORY 。指定一个大的内存时候可以加快索引效率和查询速度,且索引有较少的碎片
  • part_name 同步哪个分区索引。
  • parallel_degree 并行同步索引。设置并行度。

执行如下语句进行同步:

    exec ctx_ddl.sync_index('yu_test_index')

实施建议:建议通过oracle的job对索引进行同步

  • 优化:

经常的索引同步将会导致你的CONTEXT索引产生碎片。索引碎片严重的影响了查询的反应速度。你可以定期优化索引来减少碎片,减少索引大小,提高查询效率。
当文本从表中删除的时候,Oracle Text标记删除的文档,但是并不马上修改索引。因此,就的文档信息占据了不必要的空间,导致了查询额外的开销。你必须以FULL模式优化索引,从索引中删除无效的旧的信息。这个过程叫做垃圾处理。当你经常的对表文本数据进行更新,删除操作的时候,垃圾处理是很必要的。

执行如下语句进行优化:

    exec ctx_ddl.optimize_index('yu_test_index','full')

实施建议:每天在系统空闲的时候对全文索引进行相应的优化,以提高检索的效率

####定时优化索引

SQL> create or replace procedure hsp_sync_index as2  begin3  ctx_ddl.sync_index('yu_test_index');4  end;5  /Procedure created.Elapsed: 00:00:00.08
SQL> VARIABLE jobno number;
SQL> BEGIN2 DBMS_JOB.SUBMIT(:jobno,'hsp_sync_index();',  3 SYSDATE, 'SYSDATE + (1/24/4)');  4 commit;  5 END;  6 /PL/SQL procedure successfully completed.Elapsed: 00:00:00.27
SQL> create or replace procedure hsp_optimize_index as2  begin3  ctx_ddl.optimize_index('yu_test_index','FULL');4  end;5  /SQL> VARIABLE jobno number;
SQL> BEGIN2 DBMS_JOB.SUBMIT(:jobno,'hsp_optimize_index();',  3 SYSDATE, 'SYSDATE + 1');  4 commit; 5 END;6 /
Procedure created

Oracle全文索引之四 维护相关推荐

  1. Oracle全文索引

    Oracle全文索引 一.设置词法分析器 Oracle实现全文检索,其机制其实很简单.即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle 称为 term)找出来,记 ...

  2. Oracle 全文索引

    缘由 我们经常需要对表的内容进行模糊查询,在数据量不算很大的情况下,使用起来还是没什么问题,因为不会出现明显的慢查询问题.但是当某些时候,单表数据量很大的时候,查询速度就会有明显的变慢问题.此时,我们 ...

  3. 《Oracle数据库管理与维护实战》——2.11 Oracle数据字典

    本节书摘来自异步社区出版社<Oracle数据库管理与维护实战>一书中的第2章,第2.11节,作者: 何伟娜 , 常建功,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  4. oracle 同步索引,oracle全文索引之同步和优化索引做了什么

    一.同步索引做了什么 我们知道,在数据被修改后,不能被查询到了,直到索引被同步.那么同步索引做了那些工作呢? > insert into t_domain values(3,'this is b ...

  5. 《Oracle数据库管理与维护实战》——1.2 Oracle各版本异同

    本节书摘来自异步社区出版社<Oracle数据库管理与维护实战>一书中的第1章,第1.2节,作者: 何伟娜 , 常建功,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  6. Oracle索引的维护

    原 Oracle 索引的维护https://blog.csdn.net/tianlesoftware/article/details/5680706版权声明: https://blog.csdn.ne ...

  7. oracle自己主动维护

    检查ORACLE自己主动维护任务是否关闭  SQL> select t.client_name, t.status from dba_autotask_client t;  CLIENT_NAM ...

  8. oracle 全文索引 优化,通过案例学调优之--Oracle 全文索引

    通过案例学调优之--Oracle 全文索引 全文检索(oracle text) Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力,Oracle Text 是 Or ...

  9. 建立Oracle全文索引

    最近要做搜索,所以学起Oracle全文索引来了. 参考文章:http://www.eygle.com/archives/2005/06/ecieoaoracleeia.html 如何使用Oracle全 ...

最新文章

  1. unity3d-----Collider 组件参考
  2. Database之SQLSever:T-SQL数据语言操作(数据定义语句DDL、数据操作语句DML、数据控制语句DCL、其他基本语句、流程控制语句、批处理语句)概念及其相关案例之详细攻略
  3. 解释一下python中的//,%和**运算符
  4. tomcat日志、控制台乱码
  5. centos有趣软件包_这5个软件包使学习R变得有趣
  6. 多亏了Google相册,如何一键释放Android手机上的空间
  7. python无法使用1号gpu_详解tensorflow2.x版本无法调用gpu的一种解决方法
  8. MessageBox消息框 1126
  9. Kubernentes
  10. R 回归 虚拟变量na_互助问答第85期:虚拟变量和空间面板回归问题
  11. python是一门胶水语言_Python是唯一被称为“胶水语言”的编程语言?事实并非如此!...
  12. 程序员删库跑路,开源开发者的出路在哪里
  13. 大学英语A4 | 上海师范大学慕课《英汉互译》笔记
  14. python中终结一个循环的保留字_【单选题】以下可以终结一个循环的保留字是() (2.0分) A. if B. break C. exit D. continue...
  15. html 淡入淡出效果,css3 transition实现淡入淡出效果 - 小俊学习网
  16. 计算机word入门教学ppt,word2003入门教学课件
  17. 阿里云物联网平台总结
  18. 键盘驱动系列---JIURL键盘驱动 3
  19. 市场新格局,分享购商业模式异军突起
  20. 用vue写的移动端车牌号输入法

热门文章

  1. 蓝桥杯单片机:12届省赛
  2. imp 只导入索引_Elasticsearch系列---实战零停机重建索引
  3. STM32 SPI通信(读写flash)
  4. STM32学习——中断方式下的发送数据
  5. linux路由内核实现分析(二)---FIB相关数据结构(4)
  6. 广东科技学院计算机应用技术专业,广东科技学院是几本 [深圳大学应用技术学院计算机技术专业2018考研调剂信息]...
  7. 【LeetCode】【HOT】438. 找到字符串中所有字母异位词(滑动窗口)
  8. 《深入理解分布式事务》第三章 Spring 事务的实现原理
  9. 常见网络命令整理(ping、trcert、netstat)
  10. java常用设计模式七:装饰模式