zoukankan      html  css  js  c++  java
  • Oracle-创建索引分区

    对大数据量索引进行分区同样能够优化应用系统的性能。一般来说,如果索引所对应的表的数据量非常大,比如几百万甚至上千万条数据,则索引也会占用很大的空间,这时,建议对索引进行分区。

      Oracle索引分区分为本地索引分区和全局索引分区两种:全局索引不反映基础表的结构,因此,若要分区就只能进行范围分区;而局部索引反映基础表的结构。

    本地索引分区

      本地索引分区就是使用和分区表同样的分区键进行分区的索引,也就是说,索引分区所采用的列与该表的分区所采用的列是相同的,本地索引有以下优点:

    如果只有一个分区需要维护,则只有一个本地索引受影响

    支持分区独立性

    只有本地索引能够支持单一分区的装入和卸载
    表分区和各自的本地索引可以同时恢复
    本地索引可以单独重复
    位图索引仅由本地索引支持

    如:创建一个表分区,然后根据这个表分区创建本地索引区
    1.首先创建3个表空间,分别存放到3不同磁盘分区中,分别为ts_1,ts_2,ts_3

    2.创建一个存储学生成绩的分区表studentgrade,该表共有3个分区,分别位于表空间 ts_1,ts_2,ts_3

    create table studentgrade
    (
    id number primary key,
    name varchar2(10),
    subject varchar2(10),
    grade number
    )
    partition by range(grade)
    (
    partition par_nopass values less than(60) tablespace ts_1,
    partition par_pass values less than(70) tablespace ts_2,
    partition par_good values less than(maxvalue) tablespace ts_3
    )
    /

    3.根据表分区创建本地索引分区,与表分区一样,索引分区也是3个分区(p1,p2,p3)

    create index grade_index on studentgrade(grade)
    local
    (
    partition p1 tablespace ts_1,
    partition p2 tablespace ts_2,
    partition p3 tablespace ts_3
    )
    /

    4.最后,用户可以通过查询dba_ind_partitions视图来查看索引分区信息

    select partition_name,tablespace_name from dba_ind_partitions where index_name='GRADE_INDEX';

    全局索引区

      全局索引就是没有与分区表相同分区键的分区索引。当分区中出现许多事物并且要保证所有分区中的数据记录唯一时,采用全局索引分区

    无论表是否采用分区,都可以对表采用全局索引分区,此外,不能对Cluster表、位图索引采用全局索引分区


    如:以books表的saleprice列为索引列和分区键,创建一个范围分区的全局索引

    create index index_saleprcie on books(saleprice)

    global  partition by range(saleprice)

    (

    partition p1 values less than(30),

    partition p2 values less than(50),

    partition p3 values less than(maxvalue)

    );

    如:以books表的ISBN列为索引列和分区键,创建一个HASH分区的全局索引

    create index index_ISBN on books(ISBN)

    global partition by hash(ISBN);

    管理索引分区

      在管理索引分区中的各种操作中,常用的操作主要包括删除索引分区和重命名索引分区

    1.删除索引分区

    在books表的index_saleprice索引中,使用alter index... drop partition语句删除其中的索引分区p2

    alter index index_saleprice drop partition p2;

    对于全局索引分区,不能删除索引的最高分区,否则系统会提示错误

      在删除若干索引分区之后,如果只剩余一个索引分区,则需要对这个分区进行重建,重建分区可以使用alter index..rebuild partition

    如:在books表的index_saleprice索引中,删除其中p2和p1索引分区,然后使用alter index... rebuild partition语句重建索引分区p3

    alter index index_saleprice drop  partition p2;

    alter index index_saleprice drop  partition p1;

    alter index index_saleprice rebuild partition p3;

      重命名索引分区

    如:在index_saleprice索引中,使用alter  index... rename partition 重命名索引分区p3

    alter index index_saleprice rename partition p3 to p_new;

  • 相关阅读:
    c#读取XML
    Javascript 自动计算生日
    Thread.currentThread()与setDaeMon(boolean c)方法
    StringBuffer类的delete()方法和deleteCharAt()方法
    getStackTrace()方法使用
    JDBC详解
    eclipse与idea路径不匹配
    Idea导入maven项目不自动识别pom.xml
    IDEA找不到或无法加载主类
    MySQL:主从复制与处从复制同步延迟
  • 原文地址:https://www.cnblogs.com/xcnblog3035/p/5266894.html
Copyright © 2011-2022 走看看