Oracle的分区表和聚簇表

在什么情况下使用聚簇表?是否对比过分区表和聚簇表的性能?

1、所谓聚簇就是指以某个列为基准,把拥有相同聚簇键值的所有行都存储在相同位置上的物理储储方法。把多个表中拥有相同聚簇值的行集中存储在连续位置上的做法,意味着把需要执行表连接的行提前集中存储在了一起,从而能够显著地降低表连接时的数据运输单价。

2、聚簇分为两种:

(1)利用聚簇索引来查找数据的聚簇类型称为索引聚簇

(2)利用hash函数来查找数据的聚簇类型称为hash聚簇也称为散列聚簇(注只适合“=”相等比较运算符来读取数据)

从表的个数也可分为:

(1)单表聚簇:在指定的聚簇中只创建一个表的聚簇结构

(2)复合表聚簇:在一个单位聚簇中存储两个或两个以上的表的聚簇结构

3、在什么情况下使用聚簇表?

单表聚簇解决了海量数据库中大范围数据处理。

复合聚簇在很大程度上提高了特定表连接的效率。

聚簇在提高数据读取效率方面发挥着巨大的作用,但在数据的插入,修改,删除等操作要付出的代价相对较大。

使用聚簇对我们而言最为重要的是,如何只通过对将要聚簇化的各个表的特征合理结合,就可以实现提高数据读取效率的目的。。。

4、是否对比过分区表和聚簇表的性能?

这两种表的性能不能直接做对比吧,具体情况具体分析:

分区表的特点:

(1)可以单独对分区及分区索引进行操作

(2)提高查效率。分区裁剪功能

(3)分区更利于数据维护。可以单独分区进行备分,恢复等操作

(4)分区有利于数据库数据的过期化处理。

如果是OLTP,要设计一个日志表,对于日志表我们要做大量的插入,查询可以按时间范围,那适合用分区表

如果是OLAP,有几个表经常要连接一起查数据,而这些数据很少修改,那适合于聚簇表

查看本栏目更多精彩内容:http://www.bianceng.cn/database/Oracle/

时间: 2024-12-28 19:35:25

Oracle的分区表和聚簇表的相关文章

Oracle数据库索引聚簇与哈希聚簇使用指南

索引聚簇的使用: ◆对经常在连接语句中访问的表建立聚簇. ◆假如表只是偶尔被连接或者它们的公共列经常被修改,则不要聚簇表.(修改记录的聚簇键值比在 非聚簇的表中修改此值要花费更多的时间,因为Oracle必须将修改的记录移植到其他的块中以维护聚簇) . ◆假如经常需要在一个表上进行完全搜索,则不要聚簇这个表(对一个聚簇表进行完全搜索比在非聚 簇表上进行完全搜索的时间长,Oracle可能要读更多的块,因为表是被一起存储的). ◆假如经常从一个父表和相应的子表中查询记录,则考虑给1对多(1:*)关系创

oracle点知识8——索引聚簇和哈希聚簇

原文整理自网络: Oracle支持两种类型的聚簇: 索引聚簇和哈希聚簇 1. 什么是聚簇 聚簇是根据码值找到数据的物理存储位置,从而达到快速检索数据的目的.聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点.非聚簇索引的顺序与数据物理排列顺序无关,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块.一个表最多只能有一个聚簇索引. 2. 使用 Oracle 聚簇索引 聚簇是一种存储表的方法,这些表密切相关并经常一起连接进磁盘的同一区域.例如,表 BOOKSHELF 和BOOKSHELF_

Oracle的簇与簇表

Oracle的簇与簇表 --======================================== -- 簇表及簇表管理(Index clustered tables) --========================================       簇表是Oracle中一种可选.的存储表数据的方法.使用簇表可以减少磁盘I/O,改善访问簇表的联结所带来的资源开销,本文讲述了簇表的原理.创建以及管理簇表等.   一.什么是簇表及簇表的特性     1.簇表        

Oracle聚簇因子(Clustering factor,CF)

Oracle 聚簇因子(Clustering factor)   聚簇因子是 Oracle 统计信息中在CBO优化器模式下用于计算cost的参数之一,决定了当前的SQL语句是否走索引,还是全表扫描以及是否作为嵌套连接外部表等.如此这般,那到底什么是聚簇因子,那些情况下会影响到聚簇因子,以及如何提高聚簇因子?本文将对此展开描述.   1.堆表的存储方式    Oralce 数据库系统中最普通,最为常用的即为堆表.     堆表的数据存储方式为无序存储,也就是任意的DML操作都可能使得当前数据块存在

Oracle中如何建立分区表及簇表

1.分区表:(>2G)对大表进行优化   (Range Partitioning,List PartitioningHash Partitioning,Composite Partitioning) --按range 建立分区表 1  create table sales_range 2  (salesman_id number(5), 3   salesman_name varchar2(30), 4   sales_amount number(10), 5   sales_date   da

Oracle聚簇因子

1.聚簇因子(clustering_factor):是使用B树索引进行区间扫描的成本很重要因素,反映数据在表中分布的随机程度 2.聚簇因子的计算方法: ①扫描索引 ②比较某行的ROWID和前一行的ROWID,如果这两个ROWID不属于同一个数据块,那么聚簇因子增加1  --对选择最优查询路径影响最大的只有列的选择率和聚簇因子 3.实验测试 create table t1 as select trunc((rownum-1)/100) id, rpad(rownum,100) t_pad from

聚簇因子和执行计划的联系

在平时的工作中,可能会碰到一种很奇怪的问题,本来在生产环境中有些sql语句执行没有问题,一个很普通的查询预期走了索引扫面,但是拷贝数据到其它环境之后,就发现却走了全表扫描. 或者情况相反,本来出现问题的查询走了全表扫描,我们尝试在测试环境中浮现,但是测试环境中在相同的数据量的情况下,查询却又走了索引扫描,问题无法复现了. 出现这种情况的原因比较复杂,涉及很多的原因,其中一个很重要的原因就是聚簇因子的导致的. 聚簇因子是一个与索引相关的统计信息,它通过查看表中的数据块来进行计算得到. 对于这个问题

一个执行计划异常变更的案例 - 外传之聚簇因子(Clustering Factor)

之前的几篇文章: <一个执行计划异常变更的案例 - 前传> <一个执行计划异常变更的案例 - 外传之绑定变量窥探> <一个执行计划异常变更的案例 - 外传之查看绑定变量值的几种方法> <一个执行计划异常变更的案例 - 外传之rolling invalidation> 这个案例中涉及到了聚簇因子,所以本篇文章是这个系列的又一篇外传,写过上面几篇后,感觉现在就像打怪,见着真正的大BOSS之前,要经历各种小怪的骚扰,之所以写着几篇文章,真是因为这个案例涉及了很多知

(ORACLE)查看分区表的相关信息

ORACLE数据库如何查看分区表的相关信息呢?不知道你有没有总结过这方面的知识.下面我们先创建两个表TEST. GPRS_CELLTOPVOL_WK来做实验,脚本如下: CREATE TABLE GPRS_CELLTOPVOL_WK ( DATE_CD NUMBER ( 8 ) NOT NULL , WK_CD NUMBER ( 2 ) NOT NULL , CITY_ID NUMBER ( 10 ) , CELL_EN_NAM VARCHAR2 ( 64 ) NOT NULL , CELL_C