`
werwolf
  • 浏览: 93812 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

(转)Oracle数据库中分区表的操作方法(适用于单表大数据量或T级别数据库)

阅读更多


 摘要:在大量业务数据处理的项目中,可以考虑使用分区表来提高应用系统的性能并方便数据管理,本文详细介绍了分区表的使用。

  在大型的企业应用或企业级的数据库应用中,要处理的数据量通常可以达到几十到几百GB,有的甚至可以到TB级。虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。

  使用分区的优点:

  ·增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;

  ·维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;

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

  ·改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。

  Oracle数据库提供对表或索引的分区方法有三种:

  ·范围分区

  ·Hash分区(散列分区)

  ·复合分区

  下面将以实例的方式分别对这三种分区方法来说明分区表的使用。为了测试方便,我们先建三个表空间。

create tablespace dinya_space01 
datafile ’/test/demo/oracle/demodata/dinya01.dnf’ size 50M 
create tablespace dinya_space01 
datafile ’/test/demo/oracle/demodata/dinya02.dnf’ size 50M 
create tablespace dinya_space01 
datafile ’/test/demo/oracle/demodata/dinya03.dnf’ size 50M  

 

  1.1. 分区表的创建

  1.1.1. 范围分区

  范围分区就是对数据表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。如根据序号分区,根据业务记录的创建日期进行分区等。

  需求描述:有一个物料交易表,表名:material_transactions。该表将来可能有千万级的数据记录数。要求在建该表的时候使用分区表。这时候我们可以使用序号分区三个区,每个区中预计存储三千万的数据,也可以使用日期分区,如每五年的数据存储在一个分区上。

  根据交易记录的序号分区建表:

SQL> create table dinya_test 
2 ( 
3 transaction_id number primary key, 
4 item_id number(8) not null, 
5 item_description varchar2(300), 
6 transaction_date date not null 
7 ) 
8 partition by range (transaction_id) 
9 ( 
10 partition part_01 values less than(30000000) tablespace dinya_space01, 
11 partition part_02 values less than(60000000) tablespace dinya_space02, 
12 partition part_03 values less than(maxvalue) tablespace dinya_space03 
13 ); 
Table created. 

 

   建表成功,根据交易的序号,交易ID在三千万以下的记录将存储在第一个表空间dinya_space01中,分区名为:par_01,在三千万到六千万之间的记录存储在第二个表空间:

  dinya_space02中,分区名为:par_02,而交易ID在六千万以上的记录存储在第三个表空间dinya_space03中,分区名为par_03.

  根据交易日期分区建表:

SQL> create table dinya_test 
2 ( 
3 transaction_id number primary key, 
4 item_id number(8) not null, 

5 item_description varchar2(300), 
6 transaction_date date not null 
7 ) 
8 partition by range (transaction_date) 
9 ( 
10 partition part_01 values less than(to_date(’2006-01-01’,’yyyy-mm-dd’)) 
tablespace dinya_space01, 
11 partition part_02 values less than(to_date(’2010-01-01’,’yyyy-mm-dd’)) 
tablespace dinya_space02, 
12 partition part_03 values less than(maxvalue) tablespace dinya_space03 
13 ); 
Table created.  

 

  这样我们就分别建了以交易序号和交易日期来分区的分区表。每次插入数据的时候,系统将根据指定的字段的值来自动将记录存储到制定的分区(表空间)中。

  当然,我们还可以根据需求,使用两个字段的范围分布来分区,如partition by range ( transaction_id ,transaction_date), 分区条件中的值也做相应的改变,请读者自行测试。

  1.1.2. Hash分区(散列分区)

  散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。如将物料交易表的数据根据交易ID散列地存放在指定的三个表空间中:

SQL> create table dinya_test 
2 ( 
3 transaction_id number primary key, 
4 item_id number(8) not null, 
5 item_description varchar2(300), 
6 transaction_date date 
7 ) 
8 partition by hash(transaction_id) 
9 ( 
10 partition part_01 tablespace dinya_space01, 
11 partition part_02 tablespace dinya_space02, 
12 partition part_03 tablespace dinya_space03 
13 ); 
Table created.  

 

  建表成功,此时插入数据,系统将按transaction_id将记录散列地插入三个分区中,这里也就是三个不同的表空间中。

  1.1.3. 复合分区

  有时候我们需要根据范围分区后,每个分区内的数据再散列地分布在几个表空间中,这样我们就要使用复合分区。复合分区是先使用范围分区,然后在每个分区内再使用散列分区的一种分区方法,如将物料交易的记录按时间分区,然后每个分区中的数据分三个子分区,将数据散列地存储在三个指定的表空间中:

SQL> create table dinya_test 
2 ( 
3 transaction_id number primary key, 
4 item_id number(8) not null, 
5 item_description varchar2(300), 
6 transaction_date date 
7 ) 
8 partition by range(transaction_date)subpartition by hash(transaction_id) 
9 subpartitions 3 store in (dinya_space01,dinya_space02,dinya_space03) 
10 ( 
11 partition part_01 values less than(to_date(’2006-01-01’,’yyyy-mm-dd’)), 
12 partition part_02 values less than(to_date(’2010-01-01’,’yyyy-mm-dd’)), 
13 partition part_03 values less than(maxvalue) 
14 ); 
Table created.  

 


  该例中,先是根据交易日期进行范围分区,然后根据交易的ID将记录散列地存储在三个表空间中。

 

分享到:
评论

相关推荐

    ORACLE创建数据库

    ORACLE创建数据库是数据库管理员(DBA)必须掌握的基本技能之一。数据库的创建涉及到多个步骤和决策,包括确定数据库的用途、配置、性能优化等方面。Oracle数据库作为业界广泛使用的数据库管理系统,其创建流程较为...

    ORACLE数据库体系结构[参照].pdf

    系统全局区(SGA)是Oracle数据库中的关键内存结构,它包含了数据缓冲区(存储数据和索引块)、数据字典缓冲区(存储表定义等元数据)、进程信息、封锁队列(用于锁定管理)、以及预读和写入相关的缓冲区。...

    Oracle数据库基础及应用第二章.pptx

    * Oracle分区:它为大型的底层数据库表和索引增加了重要的可管理性、可用性和性能,从而为OLTP、数据中心和数据仓库应用程序增加了数据管理环境。 * Oracle高级安全性(ASO):它为Oracle数据库提供了网络加密的一...

    Oracle数据库基础教程-参考答案.pdf

    Oracle数据库是企业级关系型数据库管理系统,广泛应用于各种规模的企业环境中。本教程主要涵盖了Oracle数据库的基础知识,包括安装与卸载数据库服务器、数据库类型的区别、用户权限管理以及数据库文件结构等方面。 ...

    Oracle数据库基础知识讲义.pptx

    2. Oracle Database 10g Standard Edition:增加了RAC(Real Application Clusters)支持,适用于1-4个CPU的服务器,可以实现双机热备或RAC配置,适用于对数据库性能和安全性有一定要求的大中型企业。 3. Oracle ...

    Oracle数据库10g产品系列白皮书

    3. **Oracle数据库10g企业版**:专为关键任务应用程序设计,如大业务量的在线事务处理(OLTP)环境、数据仓库和互联网应用程序,提供高效、可靠、安全的数据管理能力。此版本包含了Oracle数据库的所有组件,并可通过...

    linux系统及oracle数据库安装

    可以选择适用于单处理器或多处理器系统的版本。 2. **OCFS2 工具**: 提供对OCFS2文件系统的管理和操作能力。 3. **OCFS2 控制台**: 为用户提供一个控制台界面来管理OCFS2。 4. **Oracle OracleASM**: 为Oracle自动...

    Oracle9i数据库系统概述.pdf

    2. Oracle9i企业版:适用于大数据量的在线事务处理(OLTP)、查询密集型数据仓库和高要求的互联网应用,具备高可用性和可扩展性。 3. Oracle9i个人版:针对单用户开发和部署,确保与标准版和企业版的兼容性。 ...

    对Oracle数据库进行容灾(Veritas Volume Replicator(VVR)).docx

    在Oracle数据库环境下,VVR能够与Oracle DataGuard等逻辑数据复制技术相辅相成,适用于单节点或共享集群环境(如Oracle RAC)。VVR支持多种主流的关系型数据库,包括Oracle、DB2、Sybase和Informix,且数据文件可以...

    Oracle系列培训教程之四:数据库体系结构

    单进程实例适用于单用户环境,所有Oracle代码在一个进程中运行。而在多进程实例中,Oracle代码和用户应用程序分别由多个进程执行,更适应多用户环境。在多进程实例中,进程分为用户进程和Oracle进程。用户进程与...

    安装Oracle 9i数据库服务器

    Oracle 9i数据库服务器的安装和配置是IT管理员在搭建企业级数据库系统时的重要环节。本文将详细解析这个过程,确保读者能够理解并掌握Oracle 9i的安装配置方法。 首先,安装Oracle 9i数据库服务器需要满足一定的...

    静默安装Oracle10G数据库软件.rar

    在Oracle 10g中,静默安装不仅适用于单实例数据库,还可以用于创建RAC(Real Application Clusters)集群环境。RAC安装时,还需要额外配置集群相关的参数,如网络服务名、集群资源和投票磁盘等。 此外,了解Oracle ...

    SQL 数据库性能调优方面的总结

    - 水平索引与垂直索引:水平索引适用于单表查询,而垂直索引则更适合多表关联查询。 - 索引覆盖:尽可能使用索引覆盖查询,减少表扫描操作。 - **SQL语句优化**: - 使用PL/SQL存储过程:通过将复杂的逻辑封装进...

    Oracle第7章数据库实例.pptx

    Oracle数据库是世界上最流行的数据库管理系统之一,尤其在企业级应用中占据重要地位。在Oracle 10g中,数据库实例是一个核心概念,它是由内存结构和后台进程组成的中间层,负责管理和控制物理数据库。本章主要讲解了...

    数据库基本知识学习(1)

    集中式数据库系统所有数据存储在同一台计算机上,适用于单用户或少量用户环境。而C/S(客户端/服务器)数据库系统则将用户界面转移到客户端,服务器主要处理事务处理请求,提高了性能和可扩展性,同时减少了网络传输...

    架构师修炼笔记 MySQL架构设计之数据库拆分技术方法 共45页.pptx

    在数据库架构设计中,数据库拆分是一种常见的解决高并发、大数据量问题的策略。本篇笔记主要探讨了MySQL数据库的拆分技术,包括CAP原则、可扩展性原则以及垂直拆分和水平拆分的实践。 首先,CAP原则是分布式系统...

    Oracle 课件 01

    - **逻辑结构**:包含如表、视图、索引等数据库对象,这些对象独立于物理存储方式,方便用户以逻辑方式理解和操作数据。 - **物理结构**:数据库的实际存储形式,由一系列文件组成,如数据文件、控制文件、重做日志...

    DB数据库指南.pptx

    个人版适用于单用户,而企业版则适用于大中型企业,特别是包含表分区功能的DPF(Database Partitioning Feature)。工作组版则适合小型企业和部门。DB2提供了一整套数据服务,包括管理、安全、检索、可扩展性、可用...

    Oracle课后答案-孙凤栋-第二版1

    Oracle数据库的物理存储结构包括数据文件、控制文件、重做日志文件等,逻辑存储结构包括表空间、段、区和数据块,这些结构相互关联,共同构成了数据库的存储层次。后台进程DBWR在缓冲区中的数据变化达到一定阈值或...

Global site tag (gtag.js) - Google Analytics