Oracle 模式对象——聚簇(Clusters)
http://docs.oracle.com/cd/B28359_01/server.111/b28318/schema.htm#autoId75
本文内容
- 聚簇
- 管理聚簇涉及的方面
- 参考资料
聚簇
聚簇是一种存储表数据的可选方法。聚簇是共享相同数据块的一组表。因为,它们有共同的列,并经常一起使用。
例如,Oracle HR 模式的 employees 和 departments 表都具有 department_id 列。当聚簇 employees 和 departments 表时,Oracle 数据库在物理上存储所有的行,两个表中每个部门的每个员工都存储在相同的数据块。
如图 1 所示,当聚簇 employees 和 departments 表时,发生的事情:
图 1 聚簇 Oracle HR 模式 employees 和 departments 表
类似地,聚簇 Oracle SCOTT 模式 emp 和 dept 表,如图 2 所示。
图 2 聚簇 Oracle SCOTT 模式 emp 和 dept 表
可以看到,聚簇对表连接的性能很有帮助。
聚簇把不同表的相关数据行存储在相同的数据块,正确地使用聚簇可以获得如下好处:
- 连接已聚簇的表,可以减少磁盘 I/O 。
- 连接已聚簇的表,可以改善访问。
- 在一个聚簇中,一个聚簇键值是对一个特定行的聚簇键列的值。每个聚簇键值在聚簇和聚簇索引中只被存储一次,无论不同表的行包含多少值。因此,与非聚簇的表相比,需要更少的存储空间来存储相关的表和索引。例如,上图所示,每个聚簇键(每 department_id)对于在 employees 和 departments 表包含相同值的很多行只存储一次。
管理聚簇涉及的方面
-
为聚簇选择适当的表
-
为聚簇键选择适当地列
-
指定一个平均聚簇键和相关行所需的空间
-
指定每个聚簇和聚簇索引行的位置
-
估计聚簇大小并设置存储参数