前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Oracle Concept》第二章 - 15

《Oracle Concept》第二章 - 15

作者头像
bisal
发布2019-03-15 11:32:07
3320
发布2019-03-15 11:32:07
举报
文章被收录于专栏:bisal的个人杂货铺

表簇概述

表簇是一组在相同数据块中共享普通列并存储相关数据的表。当表被簇集后,一个数据块就能包含多张表的行。例如一个数据块能存储来自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》了解使用表簇的一些原则。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年03月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档