`
liwenshui322
  • 浏览: 519092 次
  • 性别: 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 分区概述 Oracle分区是一种将大表或索引分割成较小部分的技术,旨在提高查询性能、减少管理开销并简化数据维护操作。通过合理地将数据分成多个物理块,可以显著提升查询效率,特别是在处理大量历史数据...

    Oracle 分区表 分区索引

    #### 一、Oracle分区概述 在Oracle数据库中,分区技术是一种非常有效的管理大型表和索引的方法。通过将一个大的表或索引分成多个较小的部分(分区),可以显著提高查询性能,并简化表和索引的管理。 #### 二、何时...

    oracle分区与索引

    #### 一、Oracle 分区概述 在Oracle数据库中,分区是一种物理数据组织技术,它将一个大的表或索引分成多个较小的部分,每个部分都可以独立管理。通过分区,可以显著提高查询性能,简化管理,并提供更好的可维护性。...

    oracle分区

    #### 一、Oracle分区概述 Oracle分区是Oracle数据库中一项非常重要的功能,它通过将一个大的表或索引物理地分割成多个较小的部分来提高查询性能和管理效率。这种方式有助于减少数据访问的时间,并且可以显著提高大...

    oracle分区操作文档

    #### 一、Oracle分区概述 Oracle数据库中的分区技术是一种重要的物理组织数据的方法,它能够显著提高大规模数据集的查询性能,同时简化数据管理任务。通过将一个大表或索引分割成更小、更容易管理的部分(分区),...

    oracle分区表总结

    #### 一、Oracle分区表概述 在Oracle数据库中,分区是一种对大型表进行物理分割的方法,它可以显著提高查询性能并简化数据管理任务。通过将一个大表分成多个较小的部分(即分区),可以更快地执行查询操作,尤其是...

    oracle分区表详细讲解

    ### 一、Oracle分区表概述 Oracle分区表是一种数据库技术,用于将大型表或索引物理地分割成多个部分,以提高查询性能、简化数据管理并减少资源消耗。通过分区,可以将数据分布到不同的表空间,实现更高效的数据访问...

    oracle表分区详解

    ### Oracle表分区详解 #### 一、概述 Oracle数据库中的表分区是一种高级组织技术,它通过将表的大数据集划分为较小的、更易于管理的部分(即分区),从而提高查询性能和可管理性。表分区可以按照不同的策略进行...

    导入导出 Oracle 分区表数据

    ### 导入导出Oracle分区表数据 #### 一、概述 在Oracle数据库管理中,对分区表进行数据的导入与导出是一项常见的任务。分区技术可以显著提高大型表的性能,尤其是在处理大规模数据集时。为了有效地管理和迁移这些...

    ORACLE分区表的创建

    ### ORACLE 分区表的创建详解 #### 一、概述 在Oracle数据库中,分区是一种高效的数据管理方式,尤其适用于大型表和索引组织表。通过将数据逻辑地分割成多个独立的部分(即分区),可以显著提高查询性能,并简化表...

    Oracle_11g_面向DBA的新功能学习指南 less09

    #### 一、Oracle 分区概述 Oracle 11g 引入了一系列面向数据库管理员(DBA)的新功能,旨在优化大型数据库的管理和性能。其中,分区功能尤为突出。分区是一种将大型表划分为较小、更易于管理的部分的技术,它不仅提高...

    oracle分区技术-大批量数据操作PPT课件.ppt

    Oracle 分区技术概述 Oracle 分区技术是 Oracle 数据库中的一种高级技术,用于解决大批量数据操作问题。该技术可以将大型表或索引分割成小的、独立的物理段,以提高数据的管理和查询效率。 分区技术的优点包括: ...

    Oracle分区应用详解

    ### Oracle分区应用详解 #### 一、概述 **1、分区定义:** 分区是一种将大型表分割成多个较小部分的技术,这些部分称为分区。通过分区,可以显著改善Oracle数据库的性能,并简化数据管理。 **2、分区的好处:** ...

    oracle 详细概述,oracle11g

    在这个详细的概述中,我们将深入探讨Oracle 11g的一些核心特性及其重要知识点。 1. **数据库架构**: Oracle 11g采用多层架构,包括用户接口层、应用服务器层和数据库服务器层。这种分层设计使得系统具有更好的可...

    oracle10g的分区功能

    ### Oracle 10g 的分区功能详解 #### 一、概述 Oracle 10g 提供了一套强大的分区功能,旨在提升大型数据库系统的管理效率、性能表现和可用性。通过将表、索引及索引组织表(Index Organized Table, IOT)细分为较...

Global site tag (gtag.js) - Google Analytics