Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
          簇的管理
          ?
          ?
          ??? 簇是由共享相同數(shù)據(jù)塊的一組表組成的。因為這些表共享公共的列并且經(jīng)常一起被使用,所以將這些表組合在一起。因為使用簇將不同表的相關行一起存儲到相同的數(shù)據(jù)塊,所以可以有以下的好處:
          ?
          ??? 1、減少磁盤I/O,并改善訪問簇表的聯(lián)結所花的時間。
          ??? 2、每個簇鍵值在簇和簇索引中僅存儲一次。
          ?
          ??? cluster.JPG
          ?
          ?
          一、管理簇的準則
          ?
          1、為簇選擇合適的表
          ?
          ??? 需要使用簇的表一般滿足以下條件:
          ?
          ??? * 表主要被查詢 (即表不總是被插入或更改)
          ??? * 表中的記錄經(jīng)常被一起或聯(lián)結查詢
          ?
          2、為簇鍵選擇合適的列
          ?
          ??? 一般來說,好的簇鍵具有足夠的唯一值,以便相應于每個鍵值的行的組大概會填充同一個數(shù)據(jù)塊。
          ??? 每個簇鍵值的行太少了就會浪費空間,并導致一點性能損失。而當每個簇鍵值的行太多時就可能會導致額外的搜索以發(fā)現(xiàn)該鍵的行,可能會造成比沒有成簇時更差的性能。
          ?
          ??? 另注:簇索引不能是唯一的或包含一個long類型的列。
          ?
          3、指定數(shù)據(jù)塊空間使用
          ?
          ??? 通過在創(chuàng)建簇時指定PCTUSED和PCTFREE參數(shù),可以影響空間的利用。
          ?
          4、指定平均簇鍵及其相關的行所需的空間
          ?
          ??? CREATE CLUSTER語句有一個可選的參數(shù)——SIZE。它是一個估計的平均簇鍵及其相關行所需的字節(jié)數(shù)。Oracle在執(zhí)行如下任務時使用SIZE參數(shù):
          ?
          ??? * 估計可以填充到簇數(shù)據(jù)塊的簇鍵(及其相關的行)的數(shù)量時
          ??? * 限制放置到簇數(shù)據(jù)塊中的簇鍵的數(shù)量時
          ?
          ??? 注:SIZE不限制簇鍵可以使用的空間,只是一個估算值。
          ?
          5、指定每個簇和簇索引行的位置
          ?
          ??? 可以在CREATE CLUSTER/INDEX 語句中指定TABLESPACE 以指定其不同的位置。將簇和簇索引創(chuàng)建在不同的存儲設備上的不同表空間,可以減少磁盤競爭而同步得檢索表數(shù)據(jù)和索引數(shù)據(jù)。
          ?
          6、估計簇大小和設備存儲參數(shù)
          ?
          ??? 在創(chuàng)建簇之前就估算簇的大小有以下好處:
          ?
          ??? * 可以估算出所需磁盤空間,以確定合適的硬件選擇
          ??? * 估算單個簇的大小,以便更好得管理簇要使用的空間,設置存儲參數(shù),改善I/O性能
          ?
          ?
          二、創(chuàng)建簇
          ?
          1、創(chuàng)建簇
          ?
          ??? CREATE CLUSTER emp_dept (deptno NUMBER(3))
          ??? PCTUSED 80
          ??? PCTFREE 5
          ??? TABLESPACE users
          ??? NEXT 300K
          ??? MINEXTENTS 2
          ??? MAXEXTENTS 20
          ??? PCTINCREASE 33);
          ?
          ??? 注:本例沒有INDEX子句,則會默認創(chuàng)建一個索引簇。
          ?
          2、創(chuàng)建簇表
          ?
          ??? CREATE TABLE emp (
          ??? empno NUMBER(5) PRIMARY KEY,
          ??? ename VARCHAR2(15) NOT NULL,
          ??? ...
          ??? deptno NUMBER(3) REFERENCES dept)
          ??? CLUSTER emp_dept (deptno);
          ?
          ??? CREATE TEBLE dept (
          ??? deptno NUMBER(3) PRIMARY KEY, ...)
          ??? CLUSTER emp_dept (deptno);
          ?
          ??? 注:可以將簇表和簇建立在不同的模式下,列名也不一定需要匹配,但是結構必須匹配。
          ?
          3、創(chuàng)建簇索引
          ?
          ??? CREATE INDEX emp_dept_index
          ??? ON CLUSTER emp_dept
          ??? INITRANS 2
          ??? MAXTRANS 5
          ??? TABLESPACE users
          ??? STORAGE (INITIAL 50K
          ??? NEXT 50K
          ??? MINEXTENTS 2
          ??? MAXEXTENTS 10
          ??? PCTINCREASE 33)
          ??? PCTFREE 5;
          ?
          ?
          三、更改簇
          ?
          ??? 簇的以下設置可以被更改:
          ?
          ??? * 物理屬性(PCTFREE、PCTUSED、INITRANS、MAXTRANS & STORAGE)
          ??? * 為存儲簇鍵值的所有行所需空間的平均值(SIZE)
          ??? * 默認的并行度
          ?
          ??? 另外,可明確地給簇分配新的盤區(qū),或回收在簇的末端的任何未使用盤區(qū)。
          ?
          ??? ALTER CLUSTER emp_dept
          ??? PCTFREE 30
          ??? PCTUSED 60;
          ?
          ?
          四、刪除簇
          ?
          ??? 刪除不包含表的簇及其簇索引:
          ??? DROP CLUSTER emp_dept;
          ?
          ??? 刪除包含表的簇,并同時刪除簇表:
          ??? DROP CLUSTER emp_dept INCLUDING TABLES;
          ??? --注:當簇包含簇表且未增加INCLUDING TABLES子句,則會報錯
          ?
          ??? 簇表中包含外鍵約束時:
          ??? DROP CLUSTER emp_dept INCLUDING TABLES CASCADE CONSTRAINTS;
          ??? --若存在約束且未使用CASCADE CONSTRAINTS子句,則會報錯
          ?
          ??? 刪除簇表:
          ??? DROP TABLE xxx;
          ?
          ??? 刪除簇索引:
          ??? DROP INDEX xxx;
          ??? --注:簇索引雖然可以刪除,但是沒有簇索引就無法使用簇,所以一般在重建時才刪除簇索引。
          ?
          ?
          五、簇的相關信息
          ?
          ??? DBA|ALL|USER_CLUSTERS:數(shù)據(jù)庫中所有簇的表述,包括DBMS_STATS包或ANALYZE語句產(chǎn)生的統(tǒng)計數(shù)據(jù)
          ??? DBA|USER_CLU_COLUMNS:將表列映射到簇列
          ?




          -The End-

          posted on 2009-03-17 23:16 decode360-3 閱讀(299) 評論(0)  編輯  收藏 所屬分類: DBA
          主站蜘蛛池模板: 多伦县| 蓝山县| 潍坊市| 穆棱市| 吉木萨尔县| 桃园县| 会泽县| 个旧市| 哈巴河县| 宜阳县| 延庆县| 鹤庆县| 资兴市| 山丹县| 金坛市| 永嘉县| 通江县| 白河县| 精河县| 万年县| 沭阳县| 长沙市| 自贡市| 聂拉木县| 子长县| 营山县| 鹤峰县| 封开县| 鄄城县| 怀仁县| 西贡区| 双桥区| 泗阳县| 仁布县| 临朐县| 宕昌县| 海伦市| 扶风县| 邯郸县| 荆州市| 昔阳县|