聚簇(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. 国内外做MySQL的公司

    MariaDB 基金会   Percona企业级服务   vividx      监控       webyog   监控和管理   springboksql   mysql 一体机      htt ...

  2. 如何在大量jar包中搜索特定字符

    欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...

  3. python 练习 30

    Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言,那你 ...

  4. cookie、sessionStorage、localStorage区别

    相同:不管sessionStorage localStorage 还是 cookie 都是存储用户数据的. 不同: 1.cookie的存储空间小, cookie的数据是会通过http请求带到服务器的( ...

  5. hduoj----1142A Walk Through the Forest(记忆化搜索+最短路)

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  6. HDUOJ-------2493Timer(数学 2008北京现场赛H题)

    Timer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  7. poj1122 FDNY to the Rescue!(dij+反向建图+输出路径)

    题目链接:poj1122 FDNY to the Rescue! 题意:给出矩阵,矩阵中每个元素tij表示从第i个交叉路口到第j个交叉路口所需时间,若tij为-1则表示两交叉路口之间没有直接路径,再给 ...

  8. java中将一个字符数组赋值给另一个,两者同时变化

    java中将一个字符数组赋值给另一个,两者的变化怎么是同步的?怎么才能让他们独立开? 比如有一个int[][] a 已经存在值,现在定义int[][] b=a;之后改变a的值,为何b也跟着改变?怎么才 ...

  9. css3导航-磊哥

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    < ...

  10. struts2视频学习笔记 29-30(Struts 2常用标签,防止表单重复提交)

    课时28 Struts 2常用标签解说 property标签 property标签用于输出指定值: <s:set name="name" value="'kk'&q ...