聚簇(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. Android Service与Thread的区别

    Android Service,后台,Android的后台就是指,它的运行是完全不依赖UI的.即使Activity被销毁,或者程序被关闭,只要进程还在,Service就可以继续运行.比如说一些应用程序 ...

  2. struts2 token 使用说明

    使用token标签的时候,Struts2会建立一个GUID(全局唯一的字符串)放在session中,并且会成为一个hidden放在form中. token拦截器会判断客户端form提交的token和s ...

  3. selenium+python笔记8

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 定制浏览器 """ imp ...

  4. robot API笔记1

    robot.api 包公开的公共api机器人框架 除非另有声明,公开的api在这个包中被认为是稳定的, 从而构建外部工具时,安全使用的机器人框架. 目前暴露api: logger 模块测试库的日志的目 ...

  5. Android 子activity关闭 向父activity传值

    使用startActivity方式启动的Activity和它的父Activity无关,当它关闭时也不会提供任何反馈. 可变通的,你可以启动一个Activity作为子Activity,它与父Activi ...

  6. 对Linux新手非常有用的 20个命令

    你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现我的世界里了.从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳. ...

  7. nodeschool.io 5

    ~~ FILTERED LS ~~ Create a program that prints a list of files in a given directory,filtered by the ...

  8. python中urllib和urllib2的简单用法

    import urllib #引入urllib模块,这里用urllib2也可以 fpage = urllib.urlopen( url ) #打开网页:例如url=‘http://www.xxx.co ...

  9. JavaScript访问修改css样式表

    1.访问元素中style属性的css样式 可以根据属性的ID或name标签利用dom操作直接访问到内部的css样式,直接使用style对象访问 <div id="myid" ...

  10. 189. Rotate Array -- 将数组前一半移到后一半

    Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array ...