時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
? 數(shù)據(jù)庫(kù)分區(qū)是每種數(shù)據(jù)庫(kù)都需具備的關(guān)鍵功能之一。幾乎所有的Oracle數(shù)據(jù)庫(kù)都使用分區(qū)功能來(lái)提高查詢的性能,Oracle 11g分區(qū)功能可以簡(jiǎn)化數(shù)據(jù)庫(kù)的日常管理維護(hù)工作,大大減輕了DBA(數(shù)據(jù)庫(kù)設(shè)計(jì)和管理工程師)的工作負(fù)擔(dān)。
? Oracle 11g中提供的新功能增添了更多的數(shù)據(jù)庫(kù)分區(qū)功能選擇,使分區(qū)功能在使用和維護(hù)上變得更加靈活;同時(shí),Oracle 11g也提供更多的分區(qū)功能選擇。
? Oracle 8.0版最早推出了表格的分區(qū)功能,使Oracle成為了第一個(gè)支持物理分區(qū)的RDBMS供應(yīng)商。SQL Server(2000)和DB2都只支持邏輯分區(qū)(使用UNION ALL視圖),而SQL Server 2005并不直接支持物理分區(qū)(需通過(guò)分區(qū)功能)。Oracle的分區(qū)功能選擇很受用戶群的歡迎,因?yàn)榉謪^(qū)功能能夠改善應(yīng)用程序的性能、可管理性和可用性,其中最重要的是DSS應(yīng)用程序。由于該功能受到廣泛的喜愛(ài),因此每次發(fā)布新版本都會(huì)有功能上的不斷提高。
? 下面的表格列舉了隨版本更新而不斷提高的分區(qū)功能(高級(jí)):
Oracle數(shù)據(jù)庫(kù)版本 分區(qū)功能
8.0.5? 引入范圍分區(qū)功
8i? 引入散落列分區(qū)和組合范圍散列分區(qū)功能。
9i? 引入列表分區(qū)和組合范圍列表分區(qū)功能。
10G? 引入了對(duì)索引組織表進(jìn)行范圍分區(qū)、列表分區(qū)和三列分區(qū)的功能。該版本還引入了其他組合分區(qū)功能選擇。
11G? 引入擴(kuò)展的分區(qū)功能:
-Interval分區(qū)
-外鍵分區(qū)
-虛擬列分區(qū)
-引入了分區(qū)建議器
? 分區(qū)功能類型
? 現(xiàn)在讓我們簡(jiǎn)單的討論一下以上每個(gè)分區(qū)功能的特性:
? 范圍分區(qū):數(shù)據(jù)根據(jù)分區(qū)鍵值范圍指定進(jìn)行分布。比如,如果我們選擇一個(gè)日期列作為分區(qū)鍵,分區(qū)"JAN-2007"就會(huì)包括所有包含從01-JAN-2007到31-JAN-2007之間的分區(qū)鍵值(假設(shè)分區(qū)的范圍是從這個(gè)月的第一天到這個(gè)月的最后一天)。
? 散列分區(qū):將散列算法用于分區(qū)鍵來(lái)確定指定行所在的分區(qū)。這個(gè)分區(qū)方法能夠保持I/O平衡,但是不可用于范圍查詢或不等式查詢。
? 列表分區(qū):數(shù)據(jù)根據(jù)分區(qū)鍵值列表指定進(jìn)行分布。這個(gè)分區(qū)方法對(duì)于離散的列表非常有用,如地區(qū)、國(guó)家等。
? 組合分區(qū):結(jié)合2個(gè)數(shù)據(jù)分區(qū)方法可以成為一個(gè)組合分區(qū)方法。先用第一個(gè)數(shù)據(jù)分布方法對(duì)表格進(jìn)行分區(qū),然后再用第二個(gè)數(shù)據(jù)分區(qū)方法對(duì)每個(gè)分區(qū)進(jìn)行二次分區(qū)。
? 組合分區(qū)方法有以下組合:
? 組合范圍散列分區(qū)、組合范圍列表分區(qū)、組合范圍范圍分區(qū)、組合列表范圍分區(qū)、組合列表列表分區(qū)、組合列表散列分區(qū)。
10G支持對(duì)索引組織表(索引和數(shù)據(jù)一起的表格)進(jìn)行范圍分區(qū)、列表分區(qū)或散列分區(qū),但是不支持對(duì)其進(jìn)行組合分區(qū)。
Interval分區(qū):11G版本引入的interval分區(qū)范圍分區(qū)的一種增強(qiáng)功能,可實(shí)現(xiàn)equi-sized范圍分區(qū)的自動(dòng)化。創(chuàng)建的分區(qū)作為元數(shù)據(jù),只有最開(kāi)始的分區(qū)是永久分區(qū)。隨著數(shù)據(jù)的增加會(huì)分配更多的部分,并自動(dòng)創(chuàng)建新的分區(qū)和本地索引
SQL>CREATE TABLE SALES_PART?? (TIME_ID NUMBER,?? REGION_ID NUMBER,?? ORDER_ID NUMBER,?? ORDER_DATE DATE,?? SALES_QTY NUMBER(10,2),?? SALES_AMOUNT NUMBER(12,2)?? )?? PARTITION BY RANGE (ORDER_DATE)?? INTERVAL (NUMTOYMINTERVAL(1,'month')?? (PARTITION p_first VALUES LESS THAN ('01-JAN-2006'); Numtoyminterval功能把數(shù)字轉(zhuǎn)換成 INTERVAL YEAR TO MONTH文字(‘YEAR’ or ’MONTH’)。
? 進(jìn)行Interval分區(qū)的表格有傳統(tǒng)的范圍部分和自動(dòng)生成的interval部分。進(jìn)行范圍分區(qū)的表格可以通過(guò)使用ALTER TABLE命令的 SET INTERVAL選項(xiàng)擴(kuò)展成為Interval分區(qū)的表格。
? 外鍵分區(qū):分區(qū)方案的引入是以相關(guān)表格通過(guò)相同的分區(qū)策略獲得好處作為前提設(shè)想的。Detail表格通過(guò)PK-FK關(guān)系從master表格繼承相同的分區(qū)方案。我們不需要把分區(qū)鍵存儲(chǔ)在detail表格中,通過(guò)關(guān)鍵詞"PARTITION BY REFERENCE",detail表格獲得master表格的分區(qū)方案。
? 虛擬列分區(qū):在之前的Oracle版本里,只有分區(qū)鍵存在與表格中才可以實(shí)現(xiàn)對(duì)表格的分區(qū)功能。而Oracle 11G的新功能"虛擬列"打破了這一限制,允許通過(guò)使用表格中的一列或多列的表述確定分區(qū)鍵。而虛擬列只作為元數(shù)據(jù)存儲(chǔ)。
例如:在表格ACCOUNTS中添加一個(gè)虛擬列:
SQL>CREATE TABLE ACCOUNTS?? (acc_no number(10) not null,?? acc_name varchar2(50) not null,?? acc_loc varchar2(5),?? acc_branch number(2) generated always as?? (to_number(substr(to_char(acc_no),1,2))); 使用虛擬列作為分區(qū)鍵:
SQL>CREATE TABLE accounts?? (acc_no number(10) not null,?? acc_name varchar2(50) not null,?? acc_loc varchar2(5),?? acc_branch number(2) generated always as?? (to_number(substr(to_char(acc_no),1,2)))?? partition by list (acc_branch); 分區(qū)建議器
? Oracle 11g還提供了一個(gè)分區(qū)建議器,可支持分區(qū)建議的生成,類似于10G中支持實(shí)物化視圖、實(shí)物化視圖日志和索引的功能。事實(shí)上,分區(qū)建議器在Oracle 11g中是SQL Access Advisor的一部分。這個(gè)建議器幫助生成建議,并可以顯示出推薦分區(qū)實(shí)施后可獲得的效果。它還會(huì)生成創(chuàng)建有效分區(qū)的腳本,可手動(dòng)通過(guò)SQL*Plus提交給Oracle或Enterprise Manager。
關(guān)鍵詞標(biāo)簽:Oracle
相關(guān)閱讀
熱門(mén)文章 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句 ORACLE和SQL語(yǔ)法區(qū)別歸納(1) oracle grant 授權(quán)語(yǔ)句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法