自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Oracle索引聚簇表的數(shù)據(jù)加載中兩個組成部分

數(shù)據(jù)庫 Oracle
本文涉及到的有Oracle索引聚簇表的工作原理,以及Oracle索引聚簇表的數(shù)據(jù)加載在創(chuàng)建的過程中,所要用到的SQL語句的相關(guān)內(nèi)容的介紹。

以下的內(nèi)容主要是介紹Oracle索引聚簇表的數(shù)據(jù)加載的兩個主要組成部分,其中包括對索引聚簇表的工作原理,以及Oracle索引聚簇表的數(shù)據(jù)加載創(chuàng)建過程的相關(guān)內(nèi)容的描述,以下是文章內(nèi)容的詳細(xì)介紹。

一:首先介紹一下索引聚簇表的工作原理

聚簇是指:如果一組表有一些共同的列,則將這樣一組表存儲在相同的數(shù)據(jù)庫塊中;聚簇還表示把相關(guān)的數(shù)據(jù)存儲在同一個塊上。利用聚簇,一個塊可能包含多個表的數(shù)據(jù)。概念上就是如果兩個或多個表經(jīng)常做鏈接操作,那么可以把需要的數(shù)據(jù)預(yù)先存儲在一起。聚簇還可以用于單個表,可以按某個列將數(shù)據(jù)分組存儲。

更加簡單的說,比如說,EMP表和DEPT表,這兩個表存儲在不同的segment中,甚至有可能存儲在不同的TABLESPACE中,因此,他們的數(shù)據(jù)一定不會在同一個BLOCK里。而我們有會經(jīng)常對這兩個表做關(guān)聯(lián)查詢,比如說:select * from emp,dept where emp.deptno = dept.deptno .仔細(xì)想想,查詢主要是對BLOCK的操作,查詢的BLOCK越多,系統(tǒng)IO就消耗越大。

如果我把這兩個表的數(shù)據(jù)聚集在少量的BLOCK里,查詢效率一定會提高不少。比如我現(xiàn)在將值deptno=10的所有員工抽取出來,并且把對應(yīng)的部門信息也存儲在這個BLOCK里(如果存不下了,可以為原來的塊串聯(lián)另外的塊)。這就是索引聚簇表的工作原理。

二:創(chuàng)建過程

索引聚簇表是基于一個索引聚簇(index cluster)創(chuàng)建的。里面記錄的是各個聚簇鍵。聚簇鍵和我們用得做多的索引鍵不一樣,索引鍵指向的是一行數(shù)據(jù),聚簇鍵指向的是一個Oracle BLOCK。我們可以先通過以下命令創(chuàng)建一個Oracle索引簇。

 

  1. SQL> conn scott/tiger 

已連接。

 

  1. SQL> desc dept 

名稱 是否為空? 類型

 

  1. DEPTNO NOT NULL NUMBER(2)  
  2. DNAME VARCHAR2(14)  
  3. LOC VARCHAR2(13)  
  4. SQL> create cluster emp_dept_cluster  
  5. 2 ( deptno number(2) )  
  6. 3 size 1024  
  7. 4 /  

 

簇已創(chuàng)建。

這個名字可以用戶定義,不一定叫deptno,數(shù)據(jù)類型必須和需要使用這個聚簇的數(shù)據(jù)類型一致NUMBER(2)。在這里最關(guān)鍵的一個參數(shù)是size。這個選項原來告訴Oracle:我們希望與每個聚簇鍵值關(guān)聯(lián)大約1024字節(jié)的數(shù)據(jù)(1024對于一般的表一條數(shù)據(jù)沒問題),Oracle會在用這個數(shù)據(jù)庫塊上設(shè)置來計算每個塊最 多能放下多少個聚簇鍵。

假設(shè)塊大小為8KB,Oracle會在每個數(shù)據(jù)庫塊上放上最多7個聚簇鍵,也就是說,對應(yīng)部門10、20、30、40、50、60和70的數(shù)據(jù)會放在一個塊上,一旦插入部門80,就會使用一個新塊。存放的數(shù)據(jù)是和插入順序相關(guān)的。

因 此,SIZE測試控制著每塊上聚簇鍵的最大個數(shù)。這是對聚簇空間利用率影響最大的因素。如果把這個SIZE設(shè)置得太高,那么每個塊上的鍵就會很少(單位BLOCK可以存的聚簇鍵就少了),我們會不必要地使用更多的空間。如果設(shè)置得太低,又會導(dǎo)致數(shù)據(jù)過分串鏈(一個聚簇鍵不夠存放一條數(shù)據(jù)),這又與聚簇本來的目的不符,因為聚簇原本是為了把所有相關(guān)數(shù)據(jù)都存儲在一個塊上。

向聚簇中放數(shù)據(jù)之前,需要先對聚簇建立Oracle索引??梢袁F(xiàn)在就在聚簇中創(chuàng)建表,但是由于我們想同時創(chuàng)建和填充表,而有數(shù)據(jù)之前必須有一個聚簇索引,所以我們先來建立聚簇索引。

聚簇索引的任務(wù)是拿到一個聚簇鍵值,然后返回包含這個鍵的塊的塊地址。實際上這是一個主鍵,其中每個聚簇鍵值指向 聚簇本身中的一個塊。因此,我們請求部門10的數(shù)據(jù)時,Oracle會讀取聚簇鍵,確定相應(yīng)的塊地址,然后讀取數(shù)據(jù)。聚簇鍵索引如下創(chuàng)建:

 

  1. SQL> create index emp_dept_cluster_idx  
  2. 2 on cluster emp_dept_cluster  
  3. 3 /  

 

索引已創(chuàng)建。

現(xiàn)在可以創(chuàng)建表了:

 

  1. SQL> conn segment_study/liugao 

已連接。

 

  1. SQL> create table dept  
  2. 2 ( deptno number(2) primary key, 3 dname varchar2(14),  
  3. 4 loc varchar2(13)  
  4. 5 )  
  5. 6 cluster emp_dept_cluster(deptno)  
  6. 7 /  

 

表已創(chuàng)建。

 

  1. SQL> create table emp  
  2. 2 ( empno number primary key, 3 ename varchar2(10),
     4 job varchar2(9), 5 mgr number, 6 hiredate date,
     7 sal number, 8 comm number,  
  3. 9 deptno number(2) constraint emp_fk references
     dept(deptno)  
  4. 10 )  
  5. 11 cluster emp_dept_cluster(deptno)  
  6. 12 /  

 

表已創(chuàng)建。

我們可以通過一下SQL語句查看創(chuàng)建:

 

  1. SQL> select cluster_name, table_name  
  2. 2 from user_tables  
  3. 3 where cluster_name is not null  
  4. 4 order by 1;  
  5. CLUSTER_NAME TABLE_NAME  
  6. EMP_DEPT_CLUSTER DEPT  
  7. EMP_DEPT_CLUSTER EMP  

 

現(xiàn)在,聚簇,聚簇索引,聚簇Oracle索引表都已經(jīng)建立完成。

【編輯推薦】

  1. 在Oracle 處理日期中對日期語言的設(shè)置
  2. 在Oracle 數(shù)據(jù)類型中如何使用dump函數(shù)
  3. Oracle reports工具的使用
  4. Oracle DBA速成法的潛規(guī)則
  5. Oracle Names服務(wù)的實際操作
責(zé)任編輯:佚名 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-04-12 16:50:47

Oracle索引聚簇表

2010-04-12 17:00:37

Oracle索引聚簇表

2010-04-21 13:43:31

Oracle聚簇索引

2025-04-28 07:10:46

聚簇非聚簇索引

2025-02-28 10:31:50

2023-07-04 15:54:39

數(shù)據(jù)測試數(shù)據(jù)質(zhì)量開發(fā)

2025-05-06 08:55:00

2021-12-12 08:35:13

數(shù)據(jù)策略數(shù)據(jù)數(shù)據(jù)分析

2009-07-07 17:39:26

JSP系統(tǒng)

2010-07-14 15:04:53

SQL Sever索引

2024-05-24 09:28:22

2010-09-27 11:24:37

SQL聚簇索引

2009-09-08 09:37:03

LINQ重要組成部分

2023-06-12 08:38:23

聚簇索引排序非聚簇索引

2023-04-17 10:47:49

MySQL聚簇索引

2019-08-15 11:38:31

云計算數(shù)據(jù)管理IT

2018-10-25 15:03:13

2009-06-04 07:55:08

Struts框架簡介Struts

2010-04-06 18:04:09

Oracle數(shù)據(jù)庫

2022-09-08 08:44:16

數(shù)字化轉(zhuǎn)型技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號