您的位置:首页 > 数据库 > Oracle

Oracle -- 分区

2016-07-02 12:11 459 查看
分区基本概念

分区提供了一种在多个段中存储大型数据库结构(表、索引、物化视图甚至定义为表列的二进制或字符对象)的机制。

对绝大多数SQL,与访问非分区的表相比,没有必要转变为访问分区表。

如果基于应用程序的访问需求,分区模式进行合理的设计,其结果将是应用程序具有更理想的性能和扩展性。

DBA和开发人员需要共同确定分区模式。

简单来说就是“分而治之”。

当行进入数据库或者当对行进行修改时,根据行在指定为分区键的列中的值,每个行分配至不同的分区。

SQL查询需要根据位于分区键的值查找记录时,Oracle知道应该搜索那个分区。

大数据对象 (表, 索引)被分成小物理段

分区字段值可以修改。(row movement enabled)

分区可以存储在不同的表空间

分区可以有不同的物理存储参数

分区方法

范围

Hash

列表

组合

范围分区特点:

-最早、最经典的分区算法

-Range分区通过对分区字段值的范围进行分区

-Range分区特别适合于按时间周期进行数据的存储。日、周、月、年等。

-数据管理能力强

数据迁移

数据备份

数据交换

-范围分区的数据可能不均匀

-范围分区与记录值相关,实施难度和可维护性相对较差

Hash分区特点:

- 基于分区字段的HASH值,自动将记录插入到指定分区。

- 分区数一般是2的幂

- 易于实施

- 总体性能最佳

- 适合于静态数据

- HASH分区适合于数据的均匀存储

- 数据管理能力弱

- HASH分区对数据值无法控制,哈希算法Oracle确定

列表分区特点:

- List分区通过对分区字段的离散值进行分区。

- List分区是不排序的,而且分区之间没有关联关系

- List分区适合于对数据离散值进行控制。

- List分区只支持单个字段。

- List分区具有与范围分区相似的优缺点(数据管理能力强、实施和可维护性相对较差、数据可能不均匀)

复合分区特点:

- Oracle支持的Composite分区:Range-Hash, Range-List

- 既适合于历史数据,又适合于数据均匀分布

- 与范围分区一样提供高可用性和管理性

- 实现粒度更细的操作

序列

很多应用程序都有这样的需求:既为类似订单数之类的对象生成唯一的键值。

常见做法是:

创建一个包含一个数值的列和行的表。每当需要一个新值时,应用程序会将该值递增1,然后将该值写回数据库。

在oracle中提供了一种新的对象,在不需要串行化所有事务的条件下,该对象可实现同样的功能。

-序列给内存提供唯一的整数,事务不需锁定,直接从内存获取该唯一的整数。

特点:

数百或数千个事务可以在互不干扰的情况下同时请求。只有当保存所生成数字的调整缓冲区需要刷新时,才需要等待。

如果刷新过于频繁,则用alter sequence增加该缓冲的大小。

其不足是:尽管要确保这些数字是唯一的,但并不要求它们是连续的。一旦访问该序列,则100个值缓存至内存。如果此时数据库实例重启,则这些数字会丢失,而且会为重启的数据库实例生成接下来的100个数字。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: