`
liwenshui322
  • 浏览: 512801 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle 分区概述

 
阅读更多

 

     一. 概念

      分区是将一个表或者索引物理地分解成多个更小的部分。对于访问数据库的应用来看,逻辑上看只有一个表或者索引,因为访问和普通表或索引一模一样。但物理上这个表可能被分成了数十个独立的分区,每一个分区都是独立的对象,可以独自处理。

 

      二. 如何区分数据

     分区主要有利于非常大的表和索引,将一个大表或者索引分成很多独立的小部分更容易进行处理。那么按照什么样的规则将数据进行分区?换言之,你怎么知道这条数据放A分区,那条数据放B分区。oracle中是根据分区键决定的,分区键有可能是通过某一个函数算出来的。

 

      三. 分区的好处

      1. 提高数据的可用性

      这个很容易理解,数据被分成了多个独立的部分,假如某一分区的数据出现问题,不会影响整个数据的访问。因为假如我这次访问的数据不在这个问题分区,还是可以正常执行。

     为了展示这种可用性的提高,我们将建立一个散列分区表,其中有两个分区,分别在单独的表空间中。这里将创建一个EMP表,它在EMPNO列上指定了一个分区键(EMPNO就是我们的分区键)SQL如下:  

create table emp 
(empno int,
 ename varchar2(20)
 )
 partition by hash(empno)
 (partition part_1 tablespace nnc_data01,
  partition part_2 tablespace nnc_data02
  );
  insert into emp select empno, ename from scott.emp;
  select * from emp partition(part_1);
  select * from emp partition(part_2);

     我们会看到最后两个查询会查到两个分区都有数据,而且数据是随机地分布在每个分区上,没有什么规律。这主要采用的是散列分区方式,通过计算empno的散列值来确定将数据放在哪个分区。接着运行如下sql语句:

 

alter tablespace p1 offline;
select * from emp;
variable n number
exec :n := 7844;
select * from emp where empno = :n;

      我们会看到最后一条查询语句能够执行成功,第二条查询语句执行失败。因为第二条查询语句需要访问分区p1,但是p1已经不可访问。最后一条查询语句只要访问p2分区,故p1分区可以不可以访问不会影响它的执行。

     另外,分区还可以通过减少停机时间来提高可用性。例如,如果有一个100GB的表,它划分为50个2GB的分区,这样就能更快地从错误中恢复。如果某个2GB的分区遭到破坏,现在恢复的时间就只是恢复一个2GB分区所需的时间,而不是恢复一个100GB表的时间。

 

     2. 减少管理负担

     这是因为与在一个大对象上执行操作相比,在小对象上执行同样的操作从本质上讲更为容易、速度更快,而且占用的资源也更少。

     例如,假设数据库中有一个10GB的索引。如果需要重建这个索引,而该索引未分区,你就必须将整个10GB的索引作为一个工作单元来重建。尽管可以在线地重建索引,但是要完全重建完整的10GB索引,还是需要占用大量的资源。至少需要在某处有10GB的空闲存储空间来存放两个索引的副本,还需要一个临时事务日志表来记录重建索引期间对基表所做的修改。另一方面,如果将索引本身划分为10个1GB的分区,就可以一个接一个地单独重建各个索引分区。现在只需要原先所需空闲空间的10%。另外请考虑以下情况:10GB索引的重建即将完成之前,如果出现系统或软件故障会发生什么。我们所做的全部努力都会付诸东流。如果把问题分解,将索引划分为1GB的分区,你最多只会丢掉重建工作的10%。

 

     3. 改善语句性能

     分区最后一个好处体现在改进语句(SELECT、INSERT、UPDATE、DELETE、MERGE)的性能方面。我们来看两类语句,一种是修改信息的语句,另一种是只读取信息的语句。

     1. 并行的修改语句(DML)

     修改数据库中数据的语句有可能会执行并行DML(parallel DML,PDML)。采用PDML时,Oracle使用多个线程或进程来执行INSERT、UPDATE或DELETE, 而不是执行一个串行进程。在一个有充足I/O带宽的多CPU主机上,对于大规模的DML操作,速度的提升可能相当显著。在Oracle9i以前的版本中,PDML要求必须分区。如果你的表没有分区,在先前的版本中就不能并行地执行这些操作。后续版本放开了限制。

 

     2. 查询性能

     假如分区了,我们只需要查询感兴趣的分区,不感兴趣的分区就不查了,显然能提高查询速度

分享到:
评论

相关推荐

    ORACLE表分区分区概述

    ORACLE表分区分区概述 为了简化数据库大表的管理,例如在数据仓库中一般都是TB级的数量级.ORACLE8以后推出了分区选项.分区将表分离在若于不同的表空间上,用分而治之的方法来支撑元限膨胀的大表,组大表在物理一级的...

    Oracle表分区和索引分区

    分区概述 为了简化数据库大表的管理,例如在数据仓库中一般都是TB级的数量级.ORACLE8以后推出了分区选项.分区将表分离在若于不同的表空间上,用分而治之的方法来支撑元限膨胀的大表,组大表在物理一级的可管理性.将...

    Oracle分区技术

    Oracle分区技术:Oracle 分区技术概述,分区表和分区索引技术,如何运用分区技术,11g 分区新特性,分区实施经验及案例,分区实施服务

    官方资料:Oracle白皮书_Oracle数据库11g中的分区.pdf

    官方资料:Oracle白皮书_Oracle数据库11g中的分区 分区的优势:分区的基本知识;使用分区提高可管理性;使用分区提岛性能;使用分区提高可用性;分区一为业务建模:基本分区策略;分区扩展;PARTITION ADVISOR;分区策略和...

    Oracle 数据库 11g 中的分区

    分区的优势 分区的基本知识 使用分区提高可管理性 使用分区提高性能 使用分区提高可用性 分区 — 为业务建模 基本分区策略 分区扩展 ...分区策略和扩展概述 利用分区进行信息生命周期管理 总结

    oracle11g官方中文文档完整版

    Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g:可管理性概述.pdf Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试...

    Oracle11g中文文档.zip

    Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g :真正应用测试与可管理性概述.pdf Oracle 数据库 11g:可管理性概述.pdf Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle性能...

    oracle11g官方文档中文版

    Oracle 11g 官方中文文档 包括: Oracle 11g:ORACLE ACTIVE DATA GUARD.pdf Oracle Database 11g 高可用性.pdf Oracle 数据库 11g :真正应用测试与可管理性概述.pdf Oracle 数据库 11g 中的分区.pdf Oracle 数据库...

    关于Oracle数据库各种存储形式的概述

    裸分区就是把数据库直接写在磁盘上,不再经过操作系统这一层,Oracle专门来对 这个分区进行读写。因为没有了操作系统这一层,所以读写起来的速度和性能是质一般的飞跃的,在某些对Oracle读写非常频繁的数据库应用中...

    Oracle 11g 官方中文文档集萃5

    Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g:可管理性概述.pdf Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试.pdf ...

    Oracle 11g 官方中文文档集萃【完整版】

    Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g:可管理性概述.pdf Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试....

    ORACLE8的分区管理

    关键词:ORACLE,分区 一、 分区概述: 为了简化数据库大表的管理,ORACLE8推出了分区选项。分区将表分离在若干不同的表空间上,用分而治之的方法来支撑无限膨胀的大表,给大表在物理一级的可管理性。将大表分割成...

    Oracle课件.pdf

    概述 1. BI介绍 2. Oracle介绍与安装 2.1 Oracle安装 2.2 Oracle 默认用户 2.3 服务器连接 3. PL/SQL Developer工具 4. Oracle用户和权限 4.1用户和权限 4.2角色 第2章 SQL数据操作和查询 1. SQL简介 2...

    Oracle 11g 官方中文文档集萃6

    Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g:可管理性概述.pdf Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试.pdf ...

    Oracle 11g 官方中文文档集萃4

    Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g:可管理性概述.pdf Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试.pdf ...

    Oracle Database12c数据库100个新特性与案例总结V2.0

    目 录 1 Oracle 12cR1数据库新特性 6 ...1.3 表分区或子分区的在线迁移 12 1.4 不可见字段 12 1.5 相同字段上的多重索引 13 1.6 DDL日志 13 1.7 临时undo 13 ···················

    ORACLE教材

    第一章:oracle体系结构 ORACLE 10G的卸载与安装 客户端连接工具 Oracle 10g体系结构 第二章:sql基础 ORACLE数据类型 SQL基本语法 简单查询 SQL函数 多数据表查询 事务控制 第三章:plsql基础 声明及...

    Oracle 10g Concepts 中文版

    Chapter 18, Partitioned Tables and Indexes 第 18 章,分区表及分区索引 Chapter 19, Content Management 第 19 章,内容管理 Chapter 20, Database Security 第 20 章,数据库安全 Chapter 21, Data Integrity...

    Oracle Concepts中英文对照版(10g R2).chm

    18 章,分区表及分区索引 Chapter 19, Content Management 第 19 章,内容管理 Chapter 20, Database Security 第 20 章,数据库安全 Chapter 21, Data Integrity 第 21 章,数据完整性 Chapter 22,...

    Oracle四大宝典之四:Oracle 调优入门到精通

    第1章 性能优化概述 第2章 诊断与调优工具 第3章 I/O调优 第4章 共享池 第5章 Buffer cache故障排除与调优 第6章 Redo Buffer与Java池 第7章 SGA管理 第8章 PGA与排序 第9章 SQL调优 第10章 资料收集 第11章 存储...

Global site tag (gtag.js) - Google Analytics