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