[摘要]主要從大型資料庫oracle環境四個不同級別的調整分析入手,分析oracle的系統結構和工作機理,從不同方面較全面地總結oracle資料庫的優化調整方案。
中圖分類號:tp3文獻標識碼:a 文章編號:1671-7597(2008)0720043-01
oracle資料庫中資料訪問效能的改善,可以進行調整級別,第一級調整是作業系統級包括硬體平台,第二級調整是oracle rdbms級的調整,第**是資料庫設計級的調整,最後乙個調整級是sql級。通常依此四級調整級別對資料庫進行調整、優化,資料庫的整體效能會得到很大的改善。
一、資料庫優化自由結構ofa(optimal flexible architecture)
資料庫的邏輯配置對資料庫效能有很大的影響,為此,oracle公司對錶空間設計提出了一種優化結構ofa。使用這種結構進行設計會大大簡化物理設計中的資料管理。優化自由結構ofa,簡單地講就是在資料庫中可以高效自由地分布邏輯資料物件,因此首先要對資料庫中的邏輯物件根據他們的使用方式和物理結構對資料庫的影響來進行分類,這種分類包括將系統資料和使用者資料分開、一般資料和索引資料分開、低活動表和高活動表分開等等。資料庫邏輯設計的結果應當符合幾個準則:把以同樣方式使用的段型別儲存在一起;按照標準使用來設計系統;存在用於例外的分離區域;最小化表空間衝突;將資料字典分離。
二、充分利用系統全域性區域sga(system global area)
sga是oracle資料庫的心臟。使用者的程序對這個記憶體區傳送事務,並且以這裡作為快取記憶體讀取命中的資料,以實現加速的目的。正確的sga大小對資料庫的效能至關重要。sga包括以下幾個部分:乙個是資料塊緩衝區(data block buffer cache)是sga中的一塊快取記憶體,佔整個資料庫大小的1%-2%,用來儲存從資料庫重讀取的資料塊(表、索引、簇等),因此採用least recently used (lru,最近最少使用)的方法進行空間管理。乙個是字典緩衝區。該緩衝區內的資訊包括使用者賬號資料、資料檔名、段名、盤區位置、表說明和許可權,它也採用lru方式管理。乙個是重做日誌緩衝區。該緩衝區儲存為資料庫恢復過程中用於前滾操作。還有乙個是sql共享池。儲存執行計畫和執行資料庫的sql語句的語法分析樹。也採用lru演算法管理。如果設定過小,語句將被連續不斷地再裝入到庫快取,影響系統效能。
三、規範與反規範設計資料庫
第一,規範化。對於正規化是符合某一級別的關係模式的集合,根據約束條件的不同,一般有1nf、2nf、3nf三種正規化。規範化理論是圍繞這些正規化而建立的。規範化的基本思想是逐步消除資料依賴中不合適的部分,使模式中的各關係模式達到某種程度的「分離」,即採用「一事一地」的模式設計原則,因此,所謂規範化實質上就是概念的單一化。資料庫中資料規範化的優點是減少了資料冗餘,節約了儲存空間,相應邏輯和物理的i/o次數減少,同時加快了增、刪、改的速度。但是乙個完全規範化的設計並不總能生成最優的效能,因為對資料庫查詢通常需要更多的連線操作,從而影響到查詢的速度。故有時為了提高某些查詢或應用的效能而有意破壞規範規則,即反規範化。
第二,反規範化。在資料庫的設計過程中有時故意保留非規範化約束,或者規範化以後又反規範,這樣做通常是為了改進資料庫的查詢效能,加快資料庫系統的響應速度。反規範化的好處是降低連線操作的需求、降低外碼和索引數目,減少表的個數,從而提高查詢速度,這對於效能要求相對較高的資料庫系統來說,能有效地改善系統的效能,但相應的問題是可能影響資料的完整性,加快查詢速度的同時降低修改速度。
所以,規範與反規範都是建立在實際的操作基礎之上的約束,脫離了實際兩者都沒有意義。只有把兩者合理地結合在一起,才能相互補充,發揮各自的優點。
四、索引index的優化設計
第一,管理組織索引。索引可以大大加快資料庫的查詢速度,索引把表中的邏輯值對映到安全的rowid,因此索引能進行快速定位資料的實體地址。對乙個建有索引的大型表的查詢時,索引資料可能會用完所有的資料塊快取空間,oracl不得不頻繁地進行磁碟讀寫來獲取資料,因此在對乙個大型表進行分割槽之後,可以根據相應的分割槽建立分割槽索引。dba建立索引時,應盡量保證該索引最可能地被用於where子句中,如果對查詢只簡單地制定乙個索引,並不一定會加快速度,因為索引必須指定乙個適合所需的訪問路徑。
第二,聚簇的使用。oracle提供了另一種方法來提高查詢速度,就是聚簇(cluster)。所謂聚簇,簡單地說就是把幾個表放在一起,按一定公共屬性混合存放。聚簇根據共同碼值將多個表的資料儲存在同乙個oracle塊中,這時檢索一組oracle塊就同時得到兩個表的資料,這樣就可以減少需要儲存的oracle塊,從而提高應用程式的效能。
五、使用最優的資料庫連線和sql優化方案
第一,使用直接的ole db資料庫連線方式。通過ado可以使用兩種方式連線資料庫,一種是傳統的odbc方式,一種是ole db方式。ado是建立在ole db技術上的,為了支援odbc,必須建立相應的ole db到odbc的呼叫轉換,而使用直接的ole db方式則不需轉換,從而提高處理速度。
第二,使用connection pool機制。在資料庫處理中,資源花銷最大的是建立資料庫連線,而且使用者還會有乙個較長的連線等待時間。解決的辦法就是復用現有的connection,也就是使用connection pool物件機制。connection pool的原理是:iis+asp體系中維持了乙個連線緩衝池,這樣,當下乙個使用者訪問時,直接在連線緩衝池中取得乙個資料庫連線,而不需重新連線資料庫,因此可以大大地提高系統的響應速度。
第三,高效地進行sql語句設計。通常情況下,可以採用一些方法優化sql對資料操作的表現。首先,減少對資料庫的查詢次數,即減少對系統資源的請求,使用快照和顯形圖等分布式資料庫物件可以減少對資料庫的查詢次數。其次,盡量使用相同的或非常類似的sql語句進行查詢,這樣不僅充分利用sql共享池中的已經分析的語法樹,要查詢的資料在sga中命中的可能性也會大大增加。還可以限制動態sql的使用,雖然動態sql很好用,但是即使在sql共享池中有乙個完全相同的查詢值,動態sql也會重新進行語法分析。
總之,提高系統效能需要一種系統的整體的方法,在對資料庫進行優化時,應對應用程式、i/o子系統和作業系統(os)進行相應的優化。優化是有目的地更改系統的乙個或多個元件,使其滿足乙個或多個目標的過程。對oracle來說,優化是進行有目的的調整元件級以改善效能,即增加吞吐量,減少響應時間。dba能從上述方面綜合考慮優化方案,相信多數oracle應用可以做到按最優的方式來訪問資料。
[1][美]joe greene,advanced information systems,inc.et al. oracle 8 伺服器技術精粹 [m].清華大學出版社,1999.
[2]甕正科、王新英,oracle 8.x for windows nt 實用教程[m].清華大學出版社,1999.
[3]kevin loney.oracle8i 資料庫管理員手冊[m].機械工業出版社,2000.
[4]周渝斌,基於oracle8i的大型資料庫技術講座之一資料庫優化篇[j].電腦程式設計技巧與維護,2002.
資料庫優化 資料庫設計優化
一 索引優化 1.首先索引不是越多越好,要視情況而定。因為索引會降低insert和update的效率 insert和update有時可能會重建索引。2.乙個表的索參數量最好不要超過6個,擇優而建。3.專案上線後,根據使用者的查詢條件字段稍微調整資料庫中的字段索引。二 分表 1.縱切 根據表字段來且分...
Oracle資料庫優化
1.使用索引 當sql中含有max min order by 時增速明顯。建立索引應用於join where order by排序的字段上,避免建立在含有大量重複的字段上,例如某個具有列舉型別的字段,避免索引所在的字段含有 null 值 索引會降低 insert update 的速率 2.選取最適用...
ORACLE資料庫的優化
cpu引數的調整 cpu是伺服器的一項重要資,伺服器良好的工作狀態是在工作高峰時cpu的使用在90 以上。如果空閒時間cpu使用率就在90 以上,說明伺服器缺乏cpu資源,如果工作高峰時cpu使用率仍然恨低,說明伺服器cpu資源還比較富餘。使用操作相同命令可以看到cpu的使用情況,以般unix作業系...