oracle分区表和分区索引和索引,Oracle分区索引

  oracle分区表和分区索引和索引,Oracle分区索引

  (分区p1值小于(4)表空间data0,

  分区p2值小于(5)表空间data1、

  .

  );

  适用场景

  范围分区一般适用于按时间段存储数据。

  优势

  知道用户的具体数据属于哪个分区。

  因此,通过分区可以有效地实现各种大规模的数据管理操作。

  比如删除指定时间段的历史数据管理,备份和恢复指定分区,或者导入导出。

  缺点

  分区数据可能不均匀。

  范围划分与记录值有关,实现难度和可维护性相对较差。

  列表分区

  示例

  创建表t

  (.列定义.)

  按列表分区(城市)

  (分区p1值( Beijing )表空间data0,

  分区p2值(“上海”)表空间data1,

  .

  );

  Range和List的区别在于前者是连续的,后者是离散的。

  所以优缺点和适用场景都差不多。

  这里就不赘述了

  (3)散列分区

  示例

  创建表t

  (.列的定义.)

  按散列分区(customer_no)

  分区8存储在

  (数据0,数据1);

  友情提示:Oracle建议哈希分区号一般是2的幂。

  适用场景

  哈希分区适用于静态数据。

  什么是静态数据?

  一般这类数据总是存储在数据库中,不需要进行历史数据迁移。

  例如:用户资料、账户信息等。

  这些信息大多是通过用户ID或账号获取的。

  如果根据这些字段进行哈希分区,建立本地前缀分区索引,访问效率相当高。

  优势

  统一的数据分布

  实现非常简单。

  缺点

  用户不知道一条记录会落在哪个分区。

  因此,哈希分区不适合大规模的数据管理操作。

  比如历史数据清理、批量数据导入导出等。

  组合分区

  Oracle复合分区在某种程度上是集中优势的表现。

  例如,在大多数情况下,第一维按时间字段划分,

  这适用于分区级别的大规模数据管理操作。

  第二散列或列表可以进一步提高访问性能或降低实现难度。

  仅限11g之前的版本:范围哈希或范围列表

  (二)分区索引技术概述

  在生产环境中,有时我们会遇到:

  分区表已经做好了。为什么性能没有提升?还要慢?

  原因之一是分区索引不合理,甚至根本没有设计。

  让我们大致了解一下分区上的表和索引之间的关系:

  (1)本地前缀分区索引

  假设分区表是交易流量表T,根据交易日期进行范围划分。

  如果您想在日期字段上创建索引,我们可以:

  在t (date) local上创建索引idx _ t;

  X _ t称为局部前缀索引。

  本地索引的分区方法与对应表的分区方法相同。

  所谓前缀是指分区字段作为索引字段的前缀。

  优势

  提高查询性能。

  当一个分区被删除或合并时,Oracle会自动对相应的索引分区执行相同的操作,

  整个本地前缀分区索引仍然有效,不需要重建。

  这极大地保证了桌子的可用性。

  局部无前缀划分索引

  假设我们需要在T表的area字段建立一个分区索引,我们可以:

  在t (area) local上创建索引idx _ t _ area

  X _ t _ area称为局部无前缀分区索引。

  如果前缀必须根据索引扫描所有分区,性能可能会降低。

  但是,它可以保证索引访问的可用性。

  适用场景:

  如果历史数据整理非常频繁,又无法承受全局分区索引重建时间过长的索引不可用。

  同时,如果日常事务性能可以接受,建议设计本地无前缀分区索引。

  (3)全局分区索引

  假设我们需要在T表的area字段建立一个分区索引,我们可以:

  在t(area)上创建索引idx_t_g_area

  按范围(区域)的全局分区

  (分区p1小于.);

  全局意味着索引的分区与表的分区无关。

  在10g之后,Oracle提供了两种全局分区索引:

  全球范围分区指数

  全局散列分区索引

  缺点:

  主要体现在数据的高可用性。

  在删除分区之后,全局分区索引都是无效的,除非它们被重新绑定。

  但是数据越大,重建索引的时间就越长。

oracle分区表和分区索引和索引,Oracle分区索引