聚簇(Cluster)和聚簇表(Cluster Table) 
时间:2010-03-13 23:12来源:OralanDBA.CN 作者:AlanSawyer 点击:157次 
1.创建聚簇 
icmadmin@icmnlsdb> create cluster cluster_test(id int);

Cluster created.

2.创建聚簇表 
icmadmin@icmnlsdb> create table tab_cluster1(id int primary key, name1 varchar2(30)) cluster cluster_test(id);

Table created.

icmadmin@icmnlsdb> create table tab_cluster2(id int primary key, name2 varchar2(30)) cluster cluster_test(id);

Table created.

3.创建聚簇索引 
icmadmin@icmnlsdb> create index idx_cluster_test on cluster cluster_test;

Index created.

4.查看聚簇表所属的聚簇 
icmadmin@icmnlsdb> select owner,table_name,cluster_name from dba_tables where wner='icmadmin' and table_name in ('TAB_CLUSTER1','TAB_CLUSTER2');

OWNER          TABLE_NAME          CLUSTER_NAME 
-------------- ------------------- --------------- 
icmadmin            TAB_CLUSTER2        CLUSTER_TEST 
icmadmin            TAB_CLUSTER1        CLUSTER_TEST

5.初始化几行聚簇表的数据 
icmadmin@icmnlsdb> insert into TAB_CLUSTER1 values (1,'AAA'); 
icmadmin@icmnlsdb> insert into TAB_CLUSTER1 values (2,'BBB'); 
icmadmin@icmnlsdb> insert into TAB_CLUSTER1 values (3,'CCC'); 
icmadmin@icmnlsdb> insert into TAB_CLUSTER2 values (1,'AA1'); 
icmadmin@icmnlsdb> insert into TAB_CLUSTER2 values (2,'BB2'); 
icmadmin@icmnlsdb> insert into TAB_CLUSTER2 values (3,'CC3'); 
icmadmin@icmnlsdb> commit;

6.模拟truncate表TAB_CLUSTER1,可以看到报错了,聚簇中的表不允许truncate,原因很简单,聚簇在一个块上存储了多个表,必须删除聚簇表中的行来实现删除 
icmadmin@icmnlsdb> truncate table TAB_CLUSTER1; 
truncate table TAB_CLUSTER1 
               * 
ERROR at line 1: 
ORA-03292: Table to be truncated is part of a cluster

icmadmin@icmnlsdb> truncate table TAB_CLUSTER2; 
truncate table TAB_CLUSTER2 
               * 
ERROR at line 1: 
ORA-03292: Table to be truncated is part of a cluster

7.清除聚簇表第一种方法:delete方式删除

8.清除聚簇表第二种方法:通过truncate cluster的方式清除cluster中表数据 
icmadmin@icmnlsdb> truncate cluster CLUSTER_TEST;

Cluster truncated.

icmadmin@icmnlsdb> select * from TAB_CLUSTER1;

no rows selected

icmadmin@icmnlsdb> select * from TAB_CLUSTER2;

no rows selected

9.删除聚簇 
icmadmin@icmnlsdb> drop cluster cluster_test including tables;

Cluster dropped.

聚簇(Cluster)和聚簇表(Clustered Table)的优点:

1.表中的数据一起存储在簇中,连接这些表的查询就可能执行更少的I/O,改善系统性能 
2.对于经常一同查询的表可以明显的加速表的连接(Join) 
3.非常适合查询频繁的环境

聚簇(Cluster)和聚簇表(Clustered Table)的缺点:

1.因为是一类比较特殊的对象,所以增加了数据库的管理负担 
2.非常不适合更改频繁的环境 
3.如果聚簇表总是在一起查询,考虑是否可以将他们合并为一个表

聚簇(Cluster)和聚簇表(Clustered Table)的特点:

1.聚簇由多个表组成 
2.几个表共享相同的数据块 
3.一个聚簇有一个或者多个公共的列,多个表共享这些列,这样的列叫做:聚簇关键字或簇键(Cluster Key) 
4.Oracle把多个表的数据物理地存储在一起

聚簇表中插入数据之前,聚簇上需先有聚簇索引。否则会出现如下的错误: 
icmadmin@icmnlsdb> select * from tab_cluster1; 
select * from tab_cluster1 
              * 
ERROR at line 1: 
ORA-02032: clustered tables cannot be used before the cluster index is built

聚簇(Cluster)和聚簇表(Cluster Table)的更多相关文章

  1. Chapter 18 MySQL NDB Cluster 7.3 and NDB Cluster 7.4渣翻

    Table of Contents 18.1 NDB Cluster Overview      18.2 NDB Cluster Installation      18.3 Configurati ...

  2. mysql 命令重命名表RENAME TABLE 句法

    mysql 命令重命名表RENAME TABLE 句法 RENAME TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2,...]更 ...

  3. Openvswitch原理与代码分析(5): 内核中的流表flow table操作

      当一个数据包到达网卡的时候,首先要经过内核Openvswitch.ko,流表Flow Table在内核中有一份,通过key查找内核中的flow table,即可以得到action,然后执行acti ...

  4. Lua中的weak表——weak table

    弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的.弱表的定义是:A weak table is a table whose elements are weak ref ...

  5. ABAP内表(internal table)有关的系统变量

    SY-TABIX – 内表当前行的索引号.SY-TABIX 的值可以被以下命令修改,但是只适用于索引表(index table).对于哈希表(Hashed table),这个系统变量的值为空或0. A ...

  6. Lua中的weak表——weak table(转)

    弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的.弱表的定义是:A weak table is a table whose elements are weak ref ...

  7. Oracle使用Sql把XML解析成表(Table)的方法

    SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING XMLTYPE('<?xml version="1.0&qu ...

  8. 表(Table)

    虽然我们已经将不同用途的物品保存在不同的仓库中了,但是在同一个仓库中数据的保存仍然存在问题.比如食品分为熟食.生肉.大米等,如果把他们随意的堆放在一起,就会造成我们无法很容易的对这些食品进行管理,当要 ...

  9. Lua表(table)的用法_个人总结

    Lua表(table)的用法_个人总结 1.表的创建及表的介绍 --table 是lua的一种数据结构用来帮助我们创建不同的数据类型.如:数组和字典--lua table 使用关联型数组,你可以用任意 ...

  10. 算法与数据结构基础 - 哈希表(Hash Table)

    Hash Table基础 哈希表(Hash Table)是常用的数据结构,其运用哈希函数(hash function)实现映射,内部使用开放定址.拉链法等方式解决哈希冲突,使得读写时间复杂度平均为O( ...

随机推荐

  1. Mybatis那一大堆事儿--1

    <select id="listAmPerfTime" resultType="Date"> SELECT pam.perf_time AS per ...

  2. js匿名函數

    (function($){})(jquery) == (function($){})(jQuery) 实际上是匿名函数 用于存放开发插件的代码 作用(非常有用): 这种写法的最大好处是形成闭包.在(f ...

  3. Provisioning Profile 导入真机

    双击Provisioning Profile文件. 然后在xcode中运行. 会自动导入手机.

  4. 20145236 《Java程序设计》第4周学习总结

    20145236 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 继承与多态 一.继承 •继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承可以理解 ...

  5. cmd扩展路径

    在命令行窗口中,输入for /? 即可得到如下参数解释==== 对一组文件中的每一个文件执行某个特定命令. FOR %variable IN (set) DO command [command-par ...

  6. MVC1-5直接访问静态页面

    MVC模式下默认是无法访问站点内静态页面,昨日百度找了半天试了半天才试成功. 默认在Views文件外的静态页面可以访问,若要访问Views里的静态页面则需要修改View文件夹中的web.config: ...

  7. js判断手机系统和微信

    //判断手机浏览器 var ua = navigator.userAgent; var ipad = ua.match(/(iPad).*OS\s([\d_]+)/), isIphone = !ipa ...

  8. tomcat项目发布 更改小猫图标 及自定义错误404界面

    tomcat发布项目的时候遇到些小问题 不过解决了 问题1. 整个服务器的404自定义界面问题 解决方法: 在tomcat安装目录下conf中web.xml中修改配置文件 <error-page ...

  9. Hive的Transform功能

    Hive的TRANSFORM关键字提供了在SQL中调用自写脚本的功能,适合实现Hive中没有的功能又不想写UDF的情况.例如,按日期统计每天出现的uid数,通常用如下的SQL SELECT date, ...

  10. 常用HTML转义字符,

    HTML字符实体(Character Entities),转义字符串(Escape Sequence) 为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,> ...