zoukankan      html  css  js  c++  java
  • Oracle 反键索引/反向索引

    反键索引又叫反向索引,不是用来加速数据访问的,而是为了均衡IO,解决热块而设计的
    比如数据这样:
    1000001 1000002 1000005 1000006
    在普通索引中会出现在一个叶子上,如果部门数据需求极大,也就是热块,多个需求之间就会有请求竞争。
    为了避开竞争 建反键索引 它会将数据逆转
    1000001 2000001 5000001 6000001
    这样索引键就不可能分布在一个叶子上.实现了IO分离,每个数据在索引中搜寻路径也就不一致了,解决了热点块竞争问题。

    建立反键索引:
    SQL> alter index i5 rebuild reverse;

    Index altered.

    查元数据:SQL> select dbms_metadata.get_ddl('INDEX','I5') from dual;

    DBMS_METADATA.GET_DDL('INDEX','I5')
    --------------------------------------------------------------------------------

    CREATE INDEX "SCOTT"."I5" ON "SCOTT"."T1" (TRIM("ENAME"))
    REVERSE
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATI
    STICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAX
    EXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROU
    PS 1 BUFFER_POOL DEFAULT)
    TABLESPACE "USERS"

    反键索引转化为正常索引:

    SQL> alter index i5 rebuild noreverse;

    Index altered.

    查元数据:SQL> select dbms_metadata.get_ddl('INDEX','I5') from dual;

    DBMS_METADATA.GET_DDL('INDEX','I5')
    --------------------------------------------------------------------------------

    CREATE INDEX "SCOTT"."I5" ON "SCOTT"."T1" (TRIM("ENAME"))

    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINE
    XTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUF
    FER_POOL DEFAULT)
    TABLESPACE "USERS"
    已经没有REVERSE,说明已经转划为了正常的普通索引。

  • 相关阅读:
    Debug模式下不崩溃, Release模式下偶尔发生崩溃的解决思路
    Qt assistant资料集
    Qt assistant 问题记录集
    QSharePointer QMap引发的问题 std::shared_ptr
    《C++ primer 第五版》读书笔记
    解决QT无法调试问题-----the cdb process terminated
    Web
    小技巧
    CodeIgniter中使用CSRF TOKEN的一个坑
    nginx日志分割小脚本
  • 原文地址:https://www.cnblogs.com/jycjy/p/11231154.html
Copyright © 2011-2022 走看看