《Oracle Concept》第二章 - 20 (12c内容补充)

这是杂货铺的第462篇文章


背景:

按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。


前言《Introduction to Oracle Database》的历史文章

《Oracle Concept》前言-12c内容补充

《Oracle Concept》前言介绍-7

《Oracle Concept》前言介绍-6

《Oracle Concept》前言介绍-5

《Oracle Concept》前言介绍-4

《Oracle Concept》前言介绍-3

《Oracle Concept》前言介绍-2

《Oracle Concept》前言介绍-1

《Oracle Conecpt》 - 目录结构

《Oracle Conecpt》 - 初步认识1


第二章《Tables and Table Clusters》 历史文章

《Oracle Concept》第二章 - 19

《Oracle Concept》第二章 - 18

《Oracle Concept》第二章 - 17

《Oracle Concept》第二章 - 16

《Oracle Concept》第二章 - 15

《Oracle Concept》第二章 - 14

《Oracle Concept》第二章 - 13

《Oracle Concept》第二章 - 12

《Oracle Concept》第二章 - 11

《Oracle Concept》第二章 - 10

《Oracle Concept》第二章 - 9

《Oracle Concept》第二章 - 8

《Oracle Concept》第二章 - 7

《Oracle Concept》第二章 - 6

《Oracle Concept》第二章 - 5

《Oracle Concept》第二章 - 4

《Oracle Concept》第二章 - 3

《Oracle Concept》第二章 - 2

《Oracle Concept》第二章 - 1


本文主题:第二章《Tables and Table Clusters》 - Overview of Tables,以下是12c内容补充。


12c的《Concept》在这章中,新增了属性聚簇表的介绍。


属性聚簇表概述

属性聚簇表是一张堆表,基于用户指定的聚簇指令,会将这些数据存储在磁盘中相近的位置。如下指令会指定使用单表还是多表的列。

  • CLUSTERING ... BY LINEAR ORDER指令会根据指定的列对表中数据进行排序。当检索条件符合聚簇子句中指定的列前缀,可以考虑使用默认的LINEAR ORDER聚簇。例如,如果sh.sales的检索经常指定一个客户的ID或者客户和产品ID,就可以在表中使用复合列cust_id和prod_id来聚簇数据。

  • CLUSTERING ... BY INTERLEAVED ORDER指令会使用特殊的算法(类似一个Z排序函数)对一张或多张表进行排序,能降低多列I/O消耗。当检索很多混合列的时候,可以考虑使用INTERLEAVED ORDER聚簇。例如,如果检索sh.sales按照不同的顺序指定不同的维度,就可以在这些维度中根据列来聚簇sales的数据。


只有在直接路径INSERT操作中才能使用属性聚类。对于传统DML语句,无法使用属性聚类的操作。


下面的章节会包含如下主题:

属性聚簇表的优点

连接属性聚簇表

使用区对I/O的降低

使用LINEAR ORDER的属性聚簇表

使用INTERLEAVED ORDER的属性聚簇表


属性聚簇表的优点

属性聚簇表的主要优点就是I/O的降低,他会显著降低表扫描的I/O成本和CPU成本。I/O的降低主要发生在区中,或者通过将聚簇的值存储在物理上比较接近的位置来降低物理I/O。


属性聚簇表会有以下优点:

  • 可以基于星型模式的维度列对事实表进行聚簇。在星型模式中,大多数查询会用到维度表,而不是事实表,因此聚簇事实表的列不会有效。Oracle数据库支持对维度表的列进行聚簇。

  • 在如下这些场景中能降低I/O:

              当使用Oracle Exadata一体机的索引、In-Memory最小/最大剪裁、或者区映射。

                 在OLTP应用中,使用linear order的属性聚簇且满足前缀要求的检索中。

                 使用INTERLEAVED ORDER的聚簇列子集。

  • 属性聚簇能提升数据压缩,间接提高了表扫描的成本。当同一个值在磁盘上相邻存储,数据库就能更容易地对他们进行压缩。当啊

  • Oracle数据库不会影响索引的存储和维护成本。


可以参考:

《Oracle Database Data Warehousing Guide》可以了解更多关于属性聚簇表的优点。


连接属性聚簇表

基于连接列的属性聚簇被称作属性聚簇表。和表聚簇相比,连接属性聚簇表不会在相同的数据块中存储来自于不同表的数据。


例如,一张属性聚簇表sales,和一张维度表连接products。sales表只会包含来自sales表的行,不会存储基于列的值和products连接得到的结果集。在数据迁移、直接路径插入、以及CTAS操作中会执行合适的连接操作。比较而言,如果sales和products都是标准的表聚簇,数据块就会包含来自于这两张表的行。


可以参考:

《Oracle Database Data Warehousing Guide》可以了解关于连接属性聚簇的信息。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值