Oracle分区表详细讲解PPT课件
- 格式:ppt
- 大小:834.00 KB
- 文档页数:48
ORACLE分区表、分区索引详解ORACLE分区表、分区索引ORACLE对于分区表⽅式其实就是将表分段存储,⼀般普通表格是⼀个段存储,⽽分区表会分成多个段,所以查找数据过程都是先定位根据查询条件定位分区范围,即数据在那个分区或那⼏个内部,然后在分区内部去查找数据,⼀个分区⼀般保证四⼗多万条数据就⽐较正常了,但是分区表并⾮乱建⽴,⽽其维护性也相对较为复杂⼀点,⽽索引的创建也是有点讲究的,这些以下尽量阐述详细即可。
1、类型说明:range分区⽅式,也算是最常⽤的分区⽅式,其通过某字段或⼏个字段的组合的值,从⼩到⼤,按照指定的范围说明进⾏分区,我们在INSERT数据的时候就会存储到指定的分区中。
List分区⽅式,⼀般是在range基础上做的⼆级分区较多,是⼀种列举⽅式进⾏分区,⼀般讲某些地区、状态或指定规则的编码等进⾏划分。
Hash分区⽅式,它没有固定的规则,由ORACLE管理,只需要将值INSERT进去,ORACLE会⾃动去根据⼀套HASH算法去划分分区,只需要告诉ORACLE要分⼏个区即可。
分区可以进⾏两两组合,ORACLE 11G以前两两组合都必须以range作为⼀级分区的开头,ORACLE⽬前最多⽀持2级别分区,但这个级别已经够我们使⽤了。
我这只以最简单的分区⽅式创建分区来说明问题,就拿range分区来说明问题吧(基本创建语句如下):CREATE [url=]TABLE[/url] TABLE_PARTITION(COL1 NUMBER,COL2 VARCHAR2(10))partition by range(COL1)(partition TAB_PARTOTION_01 values less than (450000),partition TAB_PARTOTION_02 values less than (900000),partition TAB_PARTOTION_03 values less than (1350000),partition TAB_PARTOTION_04 values less than (1800000),partition TAB_PARTOTION_OTHER values less THAN (MAXVALUE));这个分区表创建了四个定长分区,理想情况下,存储450000条数据,扩展分区是超过这个数额的分区,当发现扩展分区有数据的时候,可以进⾏将扩展分区做SPLIT操作,这个后⾯说明,这⾥先说⼀下⼀些常⽤的分区表查询功能,我们先插⼊⼀些数据进去。
Oracle的临时表一、表的种类1:永久表:非私有数据,需要DML锁。
2:临时表:临时表的定义对所有会话都是可见的,处理事务或会话期存在的私有数据,不需要DML锁,对于临时表的DML语句不生成重做日志,临时表占用临时表空间,临时表的数据是自动删除的,在临时表上建的索引也是临时的。
二、临时表的种类1:事物型临时表:在事务期间数据存在,事务结束后数据被自动删除。
2:会话型临时表:在会话期间数据存在,会话结束后数据被自动删除。
三、临时表的限制1:不能分区,不能是索引组织表或簇。
2:不能指定关于临时表的外键约束。
3:不支持并行DML或并行查询。
4:不支持分布式事务处理。
5:不能指定段存储语句、嵌套表存储语句或并行语句四、建立临时表的语法1:建立关系表2:建立对象表3:并行语句Oracle的分区表一、什么是分区表Oracle可以将大表或索引分成若干个更小更方便管理的部分,每一部分称为一个分区,这样的表称为分区表。
SQL语句使用分区表比全表或全表索引能提供更好的访问和处理数据。
下图是按周所建分区表示例。
二、使用分区表的限制1:不能分割是簇一部分的表。
2:不能分割含有LONG或LONG RAW列的表。
3:索引组织表IOT不能进行范围分区。
**采用基于规则的优化器时,有会从分区表中受益!三、分区方法1:范围分区(更适合历史数据库)—Oracle8从惟一可用的分区类型按照列的列表的范围分割表;如果是索引组织表,则列的列表就必须是索引组织表主键的子集。
分区关键列的限制:列列表中的列可以是任何一种内置的数据类型,ROWID、LONG、LOB或者TIMESTAMP WITH TIME ZONE除外。
关键字MAXVALUE比任何值都高(含NULL)。
2:散列分区--Oracle8i可用的分区类型指定这个表是按哈希算法分区的,分区的数目应为2的幂。
1)单独散列分区(individual_hash_partitions)及其限制使用子名按照名字指定单个分区,分区名可以匆略。
oracle分区表详解⼀、分区表的概述:Oracle的表分区功能通过改善可管理性、性能和可⽤性,从⽽为各式应⽤程序带来了极⼤的好处。
通常,分区可以使某些查询以及维护操作的性能⼤⼤提⾼。
此外,分区还可以极⼤简化常见的管理任务,分区是构建千兆字节数据系统或超⾼可⽤性系统的关键⼯具。
分区功能能够将表、索引或索引组织表进⼀步细分为段,这些数据库对象的段叫做分区。
每个分区有⾃⼰的名称,还可以选择⾃⼰的存储特性。
从数据库管理员的⾓度来看,⼀个分区后的对象具有多个段,这些段既可进⾏集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当⼤的灵活性。
1、分区表的优点:(1)由于将数据分散到各个分区中,减少了数据损坏的可能性;(2)可以对单独的分区进⾏备份和恢复;(3)可以将分区映射到不同的物理磁盘上,来分散IO;(4)提⾼可管理性、可⽤性和性能。
2、什么时候⽤分区表(1) 单表过⼤,超过⼀定范围,建议以g计算表,均可考虑⽤分区(2)历史数据据需要剥离的(3)查询特征⾮常明显,⽐如是按整年、整⽉或者按某个范围!3、分区表的类型1、range分区,按范围2、list分区,列举分区3、hash分区,根据hash值进⾏的散列分区4、复合分区,9i开始,Oracle就包括了2种复合分区,RANGE-HASH和RANGE-LIST。
在11g,Oracle⼀下就提供了4种复合分区:RANGE-RANGE、LIST-RANGE、LIST-HASH和LIST-LIST。
⼆、创建分区的举例1、range分区create table p_table(obj_id number(10),object_id number(10),object_name varchar2(128),owner varchar2(30),object_type varchar2(19),created date)partition by range (obj_id)(partition obj_id1 values less than (20000),partition obj_id2 values less than (40000),partition obj_id3 values less than (60000),partition obj_id4 values less than (80000),partition obj_id5 values less than (99999));2、list分区create table l_table(obj_id number(10),object_id number(10),object_name varchar2(128),owner varchar2(30),segment_type varchar2(19),created date)partition by LIST(segment_type)(partition l_type1 values ('LOBINDEX') tablespace my_space1,partition l_type2 values ('VIEW') tablespace my_space2,partition l_type3 values ('TABLE') tablespace my_space2);3、hash分区create table h_table(obj_id number(10),object_id number(10),object_name varchar2(128),owner varchar2(30),object_type varchar2(19),partition by hash(object_id)( partition h_objid1,partition h_objid2,partition h_objid3,partition h_objid4);4、复合分区Oracle11g⼀下就提供了4种复合分区:RANGE-RANGE、LIST-RANGE、LIST-HASH和LIST-LIST。
Oracle分区全解一、Oracle分区简介ORACLE的分区是一种处理超大型表、索引等的技术。
分区是一种“分而治之”的技术,通过将大表和索引分成可以管理的小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能。
分区通过将操作分配给更小的存储单元,减少了需要进行管理操作的时间,并通过增强的并行处理提高了性能,通过屏蔽故障数据的分区,还增加了可用性。
二、Oracle分区优缺点优点:增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能;改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。
缺点:分区表相关:已经存在的表没有方法可以直接转化为分区表。
不过Oracle 提供了在线重定义表的功能。
三、Oracle分区方法范围分区:范围分区就是对数据表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。
如根据序号分区,根据业务记录的创建日期进行分区等。
Hash分区(散列分区):散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。
List分区(列表分区):当你需要明确地控制如何将行映射到分区时,就使用列表分区方法。
与范围分区和散列分区所不同,列表分区不支持多列分区。
如果要将表按列分区,那么分区键就只能由表的一个单独的列组成,然而可以用范围分区或散列分区方法进行分区的所有的列,都可以用列表分区方法进行分区。
范围-散列分区(复合分区):有时候我们需要根据范围分区后,每个分区内的数据再散列地分布在几个表空间中,这样我们就要使用复合分区。
复合分区是先使用范围分区,然后在每个分区内再使用散列分区的一种分区方法(注意:先一定要进行范围分区)范围-列表分区(复合分区):范围和列表技术的组合,首先对表进行范围分区,然后用列表技术对每个范围分区再次分区。
ORACLE分区表的概念及操作此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点4.表分区的几种类型及操作方法5.对表分区的维护性操作. (1.) 表空间及分区表的概念表空间:是一个或多个数据文件的集合,所有的数据对象都存放在指定此文从以下几个方面来整理关于分区表的概念及操作:1.表空间及分区表的概念2.表分区的具体作用3.表分区的优缺点4.表分区的几种类型及操作方法5.对表分区的维护性操作.(1.) 表空间及分区表的概念表空间:是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表,所以称作表空间。
分区表:当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。
表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。
( 2).表分区的具体作用Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。
通常,分区可以使某些查询以及维护操作的性能大大提高。
此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。
分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。
每个分区有自己的名称,还可以选择自己的存储特性。
从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。
但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用SQL DML 命令访问分区后的表时,无需任何修改。
什么时候使用分区表:1、表的大小超过2GB。
2、表中包含历史数据,新的数据被增加都新的分区中。
(3).表分区的优缺点表分区有以下优点:1、改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。