Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处,分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。
范围分区(RANGE)
范围分区将数据基于范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期。当使用范围分区时,请考虑以下几个规则:
1)每一个分区都必须有一个VALUES LESS THEN子句,它指定了一个不包括在该分区中的上限值。分区键的任何值等于或者大于这个上限值的记录都会被加入到下一个高一些的分区中。
2)所有分区,除了第一个,都会有一个隐式的下限值,这个值就是此分区的前一个分区的上限值。
3)在最高的分区中,MAXVALUE被定义。MAXVALUE代表了一个不确定的值。这个值高于其它分区中的任何分区键的值,也可以理解为高于任何分区中指定的VALUE LESS THEN的值,同时包括空值。
)本地分区索引
本地分区索引是使用了LOCAL属性创建的分区索引,其特征是索引分区的所有键均指向其基表某个 唯一分区中存储的相应行。Oracle创建本地分区索引的目的就是要确保索引也是分区管理的,而且索引的分区与表的分区是均衡的,也就是本地分区索引具有与其基表相同的分区、子分区,即分区键等同于表的分区键、分区数等同于表的分区数。
任何基表分区的增加、删除、合并、分割 *** 作,或者散列分区增加或合并 *** 作,Oracle会通过其自身的机制自动维护本地分区索引相应的分区,此即本地分区索引与基表的均衡性原则。
如果分区列能够形成索引列的一个子集,则本地分区索引可以是唯一索引。该限制能确保具有相同索引键的行始终映射到同一个分区,在该分区中,违反唯一性的行为能被检测到。
一、分区的概念表空间:
是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。
分区表:
当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个“表空间”(物理文件上),这样查询数据时,不至于每次都扫描整张表而只是从当前的分区查到所要的数据大大提高了数据查询的速度。
二、分区类型本文使用的表为oracle用户hr下的job_history,创建分区使用的表名均为hr_job_history。 job_history表数据为:
范围分区:范围分区将数据基于指定的范围映射到不同分区,创建表时可以创建同时可以创建分区,当范围变大或想让范围变得更小时,可以添加分区。
(1)根据某个字段值(或者maxvalue)创建分区 创建分区表并插入数据
查询各分区记录
(2)按时间划分 建表分区表并插入数据
2.列表分区: 该分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。 建表分区表并插入数据
查询各分区记录
3.散列分区:
这类分区是在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。 散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。
建表分区表并插入数据
查询各分区记录
4.范围-列表分区
这种分区是基于范围分区-列表分区,表首先按某列进行范围分区,然后再按某列进行列表分区,分区之中的分区被称为子分区。 建表分区表并插入数据
查询分区01及其子分区,注意分区与子分区的条数是相等的
5.范围-散列分区
这种分区是基于范围分区和散列分区,表首先按某列进行范围分区,然后再按某列进行散列分区。 建表分区表并插入数据
查询分区01及其子分区,注意分区与子分区的条数是相等的
不是的。表分区是针对表所做的优化以及处理。综合来说就是:通过将大表和索引分成可以管理的小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能。分区表则更加细化到对列的处理。综合来说就是:分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)