Oracle數(shù)據(jù)庫(kù)性能優(yōu)化策略的選擇
Oracle數(shù)據(jù)庫(kù)性能的優(yōu)化是每一個(gè)DBA都需要經(jīng)??紤]的問(wèn)題,下面對(duì)影響Oracle數(shù)據(jù)庫(kù)性能優(yōu)化的因素作了詳盡的闡述,供您參考。
數(shù)據(jù)庫(kù)設(shè)計(jì)是應(yīng)用程序設(shè)計(jì)的基礎(chǔ),其性能直接影響應(yīng)用程序的性能。數(shù)據(jù)庫(kù)性能包括存儲(chǔ)空間需求量的大小和查詢(xún)響應(yīng)時(shí)間的長(zhǎng)短兩個(gè)方面。為了實(shí)現(xiàn)Oracle數(shù)據(jù)庫(kù)性能優(yōu)化 ,需要對(duì)數(shù)據(jù)庫(kù)中的表進(jìn)行規(guī)范化。規(guī)范化的范式可分為第一范式、第二范式、第三范式、BCNF范式、第四范式和第五范式。一般來(lái)說(shuō),邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)會(huì)滿(mǎn)足規(guī)范化的前3級(jí)標(biāo)準(zhǔn),但由于滿(mǎn)足第三范式的表結(jié)構(gòu)容易維護(hù)且基本滿(mǎn)足實(shí)際應(yīng)用的要求。因此,實(shí)際應(yīng)用中一般都按照第三范式的標(biāo)準(zhǔn)進(jìn)行規(guī)范化。但是,規(guī)范化也有缺點(diǎn):由于將一個(gè)表拆分成為多個(gè)表,在查詢(xún)時(shí)需要多表連接,降低了查詢(xún)速度。
由于規(guī)范化有可能導(dǎo)致查詢(xún)速度慢的缺點(diǎn),考慮到一些應(yīng)用需要較快的響應(yīng)速度,在設(shè)計(jì)表時(shí)應(yīng)同時(shí)考慮對(duì)某些表進(jìn)行反規(guī)范化。反規(guī)范化可以采用以下幾種方法:
1. 分割表
分割表包括水平分割和垂直分割。
水平分割是按照行將一個(gè)表分割為多個(gè)表,這可以提高每個(gè)表的查詢(xún)速度,但查詢(xún)、更新時(shí)要選擇不同的表,統(tǒng)計(jì)時(shí)要匯總多個(gè)表,因此應(yīng)用程序會(huì)更復(fù)雜。
垂直分割是對(duì)于一個(gè)列很多的表,若某些列的訪(fǎng)問(wèn)頻率遠(yuǎn)遠(yuǎn)高于其它列,就可以將主鍵和這些列作為一個(gè)表,將主鍵和其它列作為另外一個(gè)表。通過(guò)減少列的寬度,增加了每個(gè)數(shù)據(jù)頁(yè)的行數(shù),一次I/O就可以?huà)呙韪嗟男?,從而提高了訪(fǎng)問(wèn)每一個(gè)表的速度。但是由于造成了多表連接,所以應(yīng)該在同時(shí)查詢(xún)或更新不同分割表中的列的情況比較少的情況下使用。
2. 保留冗余列
當(dāng)兩個(gè)或多個(gè)表在查詢(xún)中經(jīng)常需要連接時(shí),可以在其中一個(gè)表上增加若干冗余的列,以避免表之間的連接過(guò)于頻繁。由于對(duì)冗余列的更新操作必須對(duì)多個(gè)表同步進(jìn)行,所以一般在冗余列的數(shù)據(jù)不經(jīng)常變動(dòng)的情況下使用。
3. 增加派生列
派生列是由表中的其它多個(gè)列計(jì)算所得,增加派生列可以減少統(tǒng)計(jì)運(yùn)算,在數(shù)據(jù)匯總時(shí)可以大大縮短運(yùn)算時(shí)間。
【編輯推薦】