zoukankan      html  css  js  c++  java
  • oracle分区原理

    1.分区概述

      1)可用性提高

      当一个分区不可用(磁盘出故障等),优化器知道有这个分区机制,会相应的从查询计划中去除这个分区。提高整个表的可用性。

      2)减少管理负担

      假如需要重建一个100GB的表:

      *需要在某处存放100GB的空闲存储空间来存储它的副本。

      *需要一个临时事务日志表来记录重建索引期间对基表的修改。

      *假如在过程中出现故障,一切都付之东流。

      但是当分区后就会减小这些负担。

      3)改善语句性能

      在数据仓库系统中,会执行并行DML,如果分区后,执行一个DELETE时,它会开启多个线程或进程来并行执行。这样效率更高。

      在OLTP系统中,效果不明显,因为很少用并行DML。但是在OLTP中可以减少数据在多个分区中冲突的可能性 。

      4)均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能; 

    2.分区机制

    1、范围分区 
        当列数据可以被划分为逻辑范围时(例如年度中的月份),就可以使用范围分区。当数据在整个范围中能被均等地划分时性能最好。如果所划分的分区范围大小明显不同时,则需要考虑其他的分区方法了。

    2、散列分区 
        当数据不太容易进行范围划分时,为了性能和管理的原因又想分区时,就可以使用散列分区方法。散列分区将在指定数量的分区中均等得划分数据。创建散列分区需要指定分区列、分区数量(或单独的分区描述) 

    3、列表分区 
        当需要明确得控制如何将行映射到分区时,就需要使用列表分区。可以在每个分区表述中为该分区指定一列离散值。 
        列表分区与范围分区、散列分区的区别在于 
        ● 范围分区为分列假设了一个值的自然范围,无法将该值范围之外的分区组织在一起 
        ● 散列分区无法对数据的划分进行控制,在逻辑上是无须的 

      eg: 人的表,把所有男性放一个分区中,把所有女性放一个分区中,把不男不女的放一个分区中。

     4、组合分区 
        组合分区是在分区中使用范围分区,而在子分区中使用散列分区。组合分区很适合于历史数据和条块数据两者,改善了范围分区及其数据放置的管理型。

     5、引用分区

      引用分区可以使子表创建和父表一样的分区机制,而不要有相同的列。

      如果您希望按照父表分区的方式对子表进行分区,但没有相同的列,您又不想仅仅为了分区而引入这些列,此时引用分区将非常方便。而且,您不必针对每个子表显式声明一个很长的分区子句。

    参考:oracle Database 9i/10g/11g编程艺术 深入数据库体系结构

    http://blog.163.com/zhubinbin0516@126/blog/static/12257726201051735823602/

  • 相关阅读:
    Cassandra vs. HBase
    游戏留存率分析
    Writing a Discard Server
    t
    启动进程 派生 关闭而不关闭
    单页应用 SAP Vue
    TiDB 整体架构 结合yarn zookeeper分析架构
    Writing a Simple YARN Application 从hadoop生态抽出yarn ,单独使用yarn
    Phoenix put the sql back in NoSql
    事件序列化器 Flume 的无数据丢失保证,Channel 和事务
  • 原文地址:https://www.cnblogs.com/jslee/p/3420986.html
Copyright © 2011-2022 走看看