读书笔记:Oracle数据库之【分区】

来源:互联网 发布:松潘这两天网络怎么了 编辑:程序博客网 时间:2024/05/29 04:15

分区:是将一个表或索引物理的分解为多个更小、更可管理的部分。

分区的好处

1.提高数据的可用性


2.减轻管理负担

由于从数据库中将大段分解成了若干小段

3.改善某些查询的性能

在大型仓库环境中,通过使用分区可以消除很大的数据区间,从而不必考虑他们,相应的根本不用访问这些数据;
但在事务性系统中并不适用,因为这种系统本身就只是访问少量的数据; 

4.减少大容量OLTP系统上的竞争

可以把修改分布到多个单独的分区上
即:如果一个大段遭遇激烈的竞争,可以把它分为多个小段,从而成比例的减少竞争。

表分区机制

1.区间分区

Oracle中最常用的分区机制
可以指定应当存储在一起的数据区间;

例如:
2016年10月所有数据存储在分区1中,2016年11月所有数据存储在分区2中;

2.散列分区

指在一个列或多个列上应用一个散列函数,数据记录会按照这个散列值存放在相应的分区中。

3.列表分区

制定一个离散值集,来确定应当存储在一起的数据。

例如:
可以指定status列值在(‘A’,‘M’,‘Z’)中的行放在分区1中,status列值在(‘C’,‘D’,‘F’)中的行放在分区2中

4.间隔分区

与区间分区相似,区别在于数据库本身可以再数据到来时创建新的分区。


区间分区:DBA必须在创建分区时包含(现在及未来)所有可能的值,或DBA需定期创建分区
间隔分区:当无法放入根据DBA制定的规则建立的现有分区,数据库本身就会创建新的分区
引用分区
允许由外键强制的父子关系中的子表继承父表的分区机制。
这样就能够建立子表与其附表的对等分区,而不必对数据模型进行反规范化。
</div></blockquote></div><h3>
6.组合分区</h3><div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div>
为区间分区与散列分区的一种组合,或是 区间分区与列表分区的组合。</div></blockquote></div><div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div>通过组合分区,可以先对某些数据应用分区机制,再利用某种分区机制将分区分到子区间。</div><div></div></blockquote></div><h2>
行移动</h2><div>

alter table range_example  enable row movement;
--Oracle8.0中没有这样的功能,必须先删除行,再重新插入。

1.如果修改确定分区的列会发生什么后果?

  • 修改不会导致使用一个不同的分区,行仍属于原来的分区。
  • 修改会导致行跨分区移动。只有当表启用了行移动才支持这种情况;否则,会产生一个错误。

2.行移动机制


执行行移动时,实际上在内部就好像先删除了这一行,然后再将其重新插入。

这会更新这个表上的索引,删除旧的索引条目,再插入一个新条目。

此时会完成delete再加一个insert的相应物理工作,但在oracle看来却还是一个更新。因此不会导致insert和delete触发器出发,只有update触发器会触发。

另外,由于外键约束可能不允许,所以delete子表也不会出发delete触发器。

由于行移动的开销比正常update昂贵的多,所以,系统构建应避免 频繁修改分区键,尤其是修改会导致分区移动。


索引分区

■ 随表对索引完成相应的分区:

也称为“局部索引”(locally index)。每个表分区都有一个索引分区,而且只索引该表分区。一个给定索引分区中的所有条目都指向一个表分区,表分区


中的所有行都表示在一个索引分区中。


■ 按区间或散列对索引分区:

也称为“全局分区索引”(globally partitioned index)。

索引按区间分区(或在10g及更高版本中还可以按散列分区),一个索引分区可能指向任何(和所有)表分区。

由于全局索引只按照区间分区、散列分区,若希望使用列表分区或组合分区,则必须使用局部索引。


局部索引会使用与底层表相同的机制分区。


1.局部索引与全局索引


疑问:

1.什么是OLTP?
On-Line Transaction Processing联机事务处理过程(OLTP)

基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。

OLTP系统参考:http://baike.baidu.com/view/277075.htm

2.什么是仓库系统 ?

On-Line Analytical Processing 联机分析处理(OLAP)

3.OLTP与OLAP?

当今的数据处理大致可以分成两大类:
  • OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。

  • OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。


1 0
原创粉丝点击