時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(1)
Oracle 分區(qū)功能可以提高許多應(yīng)用程序的可管理性、性能與可用性。通過(guò)分區(qū)功能,可以將表、索引和索引組織表進(jìn)一步細(xì)分為段,從而能夠更精確地管理和訪問(wèn)這些數(shù)據(jù)庫(kù)對(duì)象。Oracle 提供了種類(lèi)繁多的分區(qū)方案以滿(mǎn)足每種業(yè)務(wù)要求。
而且,因?yàn)樵?SQL 語(yǔ)句中分區(qū)是完全透明的,所以該功能幾乎可應(yīng)用于任何應(yīng)用程序。
分區(qū)功能的優(yōu)勢(shì)
分區(qū)功能通過(guò)改善可管理性、性能和可用性,從而為各式應(yīng)用程序帶來(lái)了極大的好處。通常,分區(qū)可以使某些查詢(xún)以及維護(hù)操作的性能大大提高。此外,分區(qū)還可以極大簡(jiǎn)化常見(jiàn)的管理任務(wù)。通過(guò)分區(qū),數(shù)據(jù)庫(kù)設(shè)計(jì)人員和管理員能夠解決前沿應(yīng)用程序帶來(lái)的一些難題。分區(qū)是構(gòu)建千兆字節(jié)數(shù)據(jù)系統(tǒng)或超高可用性系統(tǒng)的關(guān)鍵工具。
分區(qū)功能的基本知識(shí)
分區(qū)功能能夠?qū)⒈?、索引或索引組織表進(jìn)一步細(xì)分為段。這些數(shù)據(jù)庫(kù)對(duì)象的段叫做分區(qū)。每個(gè)分區(qū)有自己的名稱(chēng),還可以選擇自己的存儲(chǔ)特性。從數(shù)據(jù)庫(kù)管理員的角度來(lái)看,一個(gè)分區(qū)后的對(duì)象具有多個(gè)段,這些段既可進(jìn)行集體管理,也可單獨(dú)管理。這就使數(shù)據(jù)庫(kù)管理員在管理分區(qū)后的對(duì)象時(shí)有相當(dāng)大的靈活性。但是,從應(yīng)用程序的角度來(lái)看,分區(qū)后的表與非分區(qū)表完全相同,使用 SQL DML 命令訪問(wèn)分區(qū)后的表時(shí),無(wú)需任何修改。
表的分區(qū)是通過(guò)"分區(qū)鍵"來(lái)實(shí)現(xiàn)的,分區(qū)鍵指的是一些列,這些列決定了某一行所在的分區(qū)。Oracle 數(shù)據(jù)庫(kù) 10g 提供了六項(xiàng)技術(shù)用于對(duì)表進(jìn)行分區(qū):
范圍分區(qū)
每個(gè)分區(qū)都由一個(gè)分區(qū)鍵值范圍指定(對(duì)于一個(gè)以日期列作為分區(qū)鍵的表,"2005 年 1 月"分區(qū)包含分區(qū)鍵值為從"2005 年 1 月 1 日"到"2005 年 1 月 31 日"的行)。
列表分區(qū)
每個(gè)分區(qū)都由一個(gè)分區(qū)鍵值列表指定(對(duì)于一個(gè)地區(qū)列作為分區(qū)鍵的表,"北美"分區(qū)可能包含值"加拿大""美國(guó)"和"墨西哥")。
散列分區(qū)
將散列算法用于分區(qū)鍵來(lái)確定指定行所在的分區(qū)。
組合范圍散列分區(qū)
范圍和散列分區(qū)技術(shù)的組合,通過(guò)該組合,首先對(duì)表進(jìn)行范圍分區(qū),然后針對(duì)每個(gè)單獨(dú)的范圍分區(qū)再使用散列分區(qū)技術(shù)進(jìn)一步細(xì)分。索引組織表只能進(jìn)行范圍分區(qū)。
組合范圍列表分區(qū)
范圍和列表分區(qū)技術(shù)的組合,通過(guò)該組合,首先對(duì)表進(jìn)行范圍分區(qū),然后針對(duì)每個(gè)單獨(dú)的范圍分區(qū)再使用列表分區(qū)技術(shù)進(jìn)一步細(xì)分。索引組織表可以按范圍、列表或散列進(jìn)行分區(qū)。
Oracle 數(shù)據(jù)庫(kù) 10g 還提供了三種類(lèi)型的分區(qū)索引:
本地索引
本地索引是其分區(qū)方式與其所在基礎(chǔ)表的分區(qū)方式一模一樣的索引。本地索引的每個(gè)分區(qū)僅對(duì)應(yīng)于其所在基礎(chǔ)表的一個(gè)分區(qū)。
全局分區(qū)索引
全局分區(qū)索引是使用不同于其所在表的分區(qū)鍵進(jìn)行分區(qū)的索引,其所在表可以是分區(qū)表或非分區(qū)表。全局分區(qū)的索引可以使用范圍或散列分區(qū)進(jìn)行分區(qū)。例如,某個(gè)表可以按月份進(jìn)行范圍分區(qū),因此具有十二個(gè)分區(qū),而該表上的索引則可以使用不同的分區(qū)鍵進(jìn)行范圍分區(qū),從而具有不同的分區(qū)數(shù)量。
全局非分區(qū)索引
全局非分區(qū)索引基本上和非分區(qū)表的索引一樣。索引結(jié)構(gòu)是不分區(qū)的。
Oracle 提供了一系列豐富的技術(shù),可用于對(duì)表、索引和索引組織表進(jìn)行分區(qū),因此可以針對(duì)任何業(yè)務(wù)環(huán)境中的任何應(yīng)用程序進(jìn)行最佳的分區(qū) Oracle 還提供一套完整的 SQL 命令,用于管理分區(qū)表。其中包括添加新分區(qū)、刪除分區(qū)、分拆分區(qū)以及合并分區(qū)的命令。
用分區(qū)功能提高可管理性
通過(guò) Oracle 分區(qū)功能,可將表和索引分成更多、更小的可管理單元,從而使數(shù)據(jù)庫(kù)管理員能以"化整為零,個(gè)個(gè)擊破"的方式管理數(shù)據(jù)。
使用分區(qū)功能,維護(hù)操作可集中于表的特定部分。例如,數(shù)據(jù)庫(kù)管理員可以只對(duì)表的一部分做備份,而不必對(duì)整個(gè)表做備份。對(duì)整個(gè)數(shù)據(jù)庫(kù)對(duì)象的維護(hù)操作,可以在每個(gè)分區(qū)的基礎(chǔ)上進(jìn)行,從而將維護(hù)工作分解成更容易管理的小塊。
利用分區(qū)功能提高可管理性的一個(gè)典型用法是支持?jǐn)?shù)據(jù)倉(cāng)庫(kù)中的‘滾動(dòng)視窗’加載進(jìn)程。假設(shè)數(shù)據(jù)庫(kù)管理員每周向表中加載新數(shù)據(jù)??梢詫?duì)該表進(jìn)行范圍分區(qū),使每個(gè)分區(qū)包含一周的數(shù)據(jù)。這樣加載進(jìn)程只是簡(jiǎn)單地添加新的分區(qū)。添加一個(gè)分區(qū)的操作比修改整個(gè)表效率高很多,因?yàn)?DBA 不需要修改任何其他分區(qū)。
用分區(qū)功能提高性能
由于限制了所檢查或操作的數(shù)據(jù)數(shù)量,同時(shí)支持并行任務(wù)執(zhí)行,Oracle 分區(qū)功能實(shí)現(xiàn)了性能上增益。這些特性包括:
分區(qū)修整
分區(qū)修整是用分區(qū)功能提高性能的最簡(jiǎn)單最有價(jià)值的手段。分區(qū)修整常常能夠?qū)⒉樵?xún)性能提高幾個(gè)數(shù)量級(jí)。例如,假設(shè)某個(gè)應(yīng)用程序包含一個(gè)存儲(chǔ)訂單歷史記錄的 Orders 表,并且此表已按周分區(qū)。查詢(xún)一周的訂單只需訪問(wèn)該訂單表的一個(gè)分區(qū)。如果該訂單表包含兩年的歷史記錄,這個(gè)查詢(xún)只需要訪問(wèn)一個(gè)分區(qū)而不是一百零四個(gè)。該查詢(xún)的執(zhí)行速度因?yàn)榉謪^(qū)修整而有可能快一百倍。分區(qū)修整能與所有其他 Oracle 性能特性協(xié)作。Oracle 能將分區(qū)修整功能與任何索引技術(shù)、聯(lián)接技術(shù)或并行訪問(wèn)方法結(jié)合使用。
分區(qū)智能聯(lián)接
分區(qū)功能可以通過(guò)稱(chēng)為分區(qū)智能聯(lián)接的技術(shù)提高多表聯(lián)接的性能。當(dāng)兩個(gè)表要聯(lián)接在一起,而且每個(gè)表都用聯(lián)接鍵來(lái)分區(qū)時(shí),就可以使用分區(qū)智能聯(lián)接。分區(qū)智能聯(lián)接將大型聯(lián)接分解成較小的發(fā)生在各個(gè)分區(qū)間的聯(lián)接,從而用較少的時(shí)間完成全部聯(lián)接。這就給串行和并行的執(zhí)ERP研發(fā)部心得體會(huì)行都能帶來(lái)顯著的性能改善。
用分區(qū)功能提高可用性
分區(qū)的數(shù)據(jù)庫(kù)對(duì)象具有分區(qū)獨(dú)立性。該分區(qū)獨(dú)立性特點(diǎn)可能是高可用性戰(zhàn)略的一個(gè)重要部分,例如,如果分區(qū)表的一個(gè)分區(qū)不能用,但該表的所有其他分區(qū)仍然保持在線并可用。那么這個(gè)應(yīng)用可以繼續(xù)針對(duì)該分區(qū)表執(zhí)行查詢(xún)和事務(wù)處理,只要不是訪問(wèn)不可用的分區(qū),數(shù)據(jù)庫(kù)操作仍然能夠成功運(yùn)行。
數(shù)據(jù)庫(kù)管理員可以指定各分區(qū)存放在不同的表空間里,從而讓管理員隔離其它表分區(qū)針對(duì)單個(gè)分區(qū)進(jìn)行備份與恢復(fù)操作。還有,分區(qū)功能可以減少計(jì)劃停機(jī)時(shí)間。由于分區(qū)功能改善了性能,使數(shù)據(jù)庫(kù)管理員能用相對(duì)較少的時(shí)間完成大型數(shù)據(jù)庫(kù)對(duì)象的維護(hù)工作。
未來(lái)發(fā)展方向
自從引入分區(qū)技術(shù)以來(lái),Oracle 公司在每次推出重要版本時(shí)都會(huì)增加新的分區(qū)方法。Oracle8 引入了范圍分區(qū)功能,Oracle8i 引入了散列和組合范圍散列分區(qū)功能,Oracle9i 引入了列表分區(qū)功能。在最新版本 Oracle 數(shù)據(jù)庫(kù) 10g 中,則增強(qiáng)了用于索引組織表和全局父親節(jié):祝爸爸節(jié)日快樂(lè)分區(qū)索引的分區(qū)策略,并且擴(kuò)展了其用于所有分區(qū)維護(hù)操作的并發(fā)索引維護(hù)功能。Oracle 公司致力于不斷完善分區(qū)技術(shù),確保滿(mǎn)足所有的業(yè)務(wù)需求。
結(jié)論
具有 Oracle 分區(qū)功能的 Oracle 數(shù)據(jù)庫(kù) 10g 可以顯著增強(qiáng)幾乎任何數(shù)據(jù)庫(kù)應(yīng)用程序的可管理性、性能和可用性。分區(qū)功能可用于前沿應(yīng)用程序,分區(qū)功能確實(shí)能夠成為保障這些應(yīng)用程序成功的關(guān)鍵技術(shù)成分。同時(shí),分區(qū)功能也可用于較為普通的數(shù)據(jù)庫(kù)應(yīng)用,來(lái)簡(jiǎn)化這些應(yīng)用的管理工作,降低管理成本。
關(guān)鍵詞標(biāo)簽:Oracle,數(shù)據(jù)庫(kù)
相關(guān)閱讀
熱門(mén)文章 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 oracle中使用SQL語(yǔ)句修改字段類(lèi)型-oracle修改SQL語(yǔ)句案例 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語(yǔ)句修改字段類(lèi)型-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刪除表的幾種方法