《Oracle Concept》第二章 - 15

这是杂货铺的第437篇文章

 

背景:

按照《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》第二章 - 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。

 

表簇概述

表簇是一组在相同数据块中共享普通列并存储相关数据的表。当表被簇集后,一个数据块就能包含多张表的行。例如一个数据块能存储来自employees和departments表的行,而不会仅仅存储一张表的行。

 

簇键是簇表共有的一个或多个列。例如,employees和departments表共有department_id列。当创建表簇,或者向表簇中增加创建的表时,可以指定簇键。

 

簇键值是指定行集合的簇键列的值。包含相同簇键值的数据,例如department_id=20的记录,会物理层面存储在一起。每个簇键值只会在簇和簇索引中存储一次,无论多少张不同的表包含这个值。

 

打个比方,假设HR经理有两个文件箱,一个装的是employee雇员的文件夹,另一个装的是department部门的文件夹。用户通常会询问某个指定部门的所有雇员信息。为了方便检索,经理会重新将所有文件夹整理到一个文件箱中。她会按照department的ID来区分。因此,在部门ID=20的所有雇员的文件夹会和部门ID=20的部门文件夹放在一个文件箱中,在部门ID=100的所有雇员的文件夹会和部门ID=100的部门文件夹放在一个文件箱中,等等。

 

当数据主要用于检索(不是修改),或者表中数据被频繁检索或连接的时候,此时可以考虑使用簇表。因为表簇会在一个数据块中存储不同表中的相关行,相对于非簇表,他可能会提供以下优势:

  • 降低簇表连接的磁盘I/O。

  • 提高粗表连接的访问时间。

  • 需要更少的空间存储相关的表和索引数据,原因就是每行的簇键值不会重复存储。

 

簇表不适合于以下几种情况:

  • 表会频繁更新。

  • 表会经常需要全表扫描。

  • 表需要做truncate操作。

 

参考:

《Oracle Database Performance Tuning Guide》了解使用表簇的一些原则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值