海鷗航際

          JAVA站
          posts - 11, comments - 53, trackbacks - 1, articles - 102

          Oracle數(shù)據(jù)庫及應用程序優(yōu)化

          摘 要:本文對ORACLE數(shù)據(jù)庫及ORACLE應用程序的優(yōu)化,進行了全面的分析與研究,并提出了自己的一些建議。

          關 鍵 詞:ORACLE,優(yōu)化,數(shù)據(jù)庫,SQL

          1 引言

            隨著信息化時代的到來,人們開始廣泛地使用數(shù)據(jù)庫技術對大量而復雜的信息進行科學高效的管理。在數(shù)據(jù)庫領域中的各種應用軟件大量涌現(xiàn),有Visual Foxpro,Power Builder等等,但其中ORACLE是這個領域中最優(yōu)秀也是最流行的大型數(shù)據(jù)庫應用軟件。本文就在ORACAL中如何優(yōu)化數(shù)據(jù)庫及其應用程序進行了研究。

          2 優(yōu)化數(shù)據(jù)庫

          2.1 優(yōu)化設置控制文件的個數(shù),位置及其備份

          建議CONTROL_FILE初始化參數(shù)中指定多個文件應大于2,并將控制文件鏡像到不同位置,并要把這些控制文件備份到安全的磁盤中。

          2.2 優(yōu)化設計表空間,數(shù)據(jù)文件的大小及位置

          2.2.1 設計表空間

            盡量把同一時間對磁盤的讀寫操作分散開,如對一個表中數(shù)據(jù)進行更新時,數(shù)據(jù)庫將同時去讀該表中的數(shù)據(jù)和該表上的索引信息,如果把表的數(shù)據(jù)信息和索引信息都放在同一個數(shù)據(jù)文件中,則數(shù)據(jù)庫的速度將會變慢。最好是把數(shù)據(jù)信息和索引信息分別放在不同磁盤的兩個數(shù)據(jù)文件中,此時數(shù)據(jù)庫對磁盤的讀寫操作將分散在兩個磁盤上,速度將得到顯著提高。因此在設計數(shù)據(jù)庫的表空間和數(shù)據(jù)文件時,首先給表和表的索引分別創(chuàng)建兩個表空間(存放用戶數(shù)據(jù)的數(shù)據(jù)表空間和存放表索引的索引表空間)。另外,還根據(jù)該系統(tǒng)的數(shù)據(jù)量的大小及系統(tǒng)中的數(shù)據(jù)的性質不同,再考慮創(chuàng)建幾個數(shù)據(jù)表空間或者給數(shù)據(jù)表空間添加幾個數(shù)據(jù)文件。

          2.2.2 設計數(shù)據(jù)文件的大小

            把記錄大小相當?shù)谋矸旁谕粋€表空間中,這時一個表空間的存儲參數(shù)設置,可以保證表中的記錄都放在一個范圍中,避免了一條記錄跨范圍存放,可以明顯數(shù)據(jù)庫的性能。

          2.2.3 設計數(shù)據(jù)文件的位置

            為了避免磁盤的I/O操作沖突,應把數(shù)據(jù)文件創(chuàng)建在不同位置。

          2.3 優(yōu)化設計重演日志文件

          2.3.1 重演日志文件的大小

            由于數(shù)據(jù)庫在利用重演日志文件時是循環(huán)使用它們的,而且當LGWR進程在兩個日志文件切換時,將自動產生一個檢測點,所以重演日志文件的大小會直接影響到檢測點出現(xiàn)的頻率。而由于在數(shù)據(jù)庫檢測點時,對用戶而言,數(shù)據(jù)庫的速度會受影響,所以檢測點的出現(xiàn)頻率大,或者檢測點正好出現(xiàn)在數(shù)據(jù)庫處理數(shù)據(jù)高峰期,將會極大影響數(shù)據(jù)庫的性能。因此,重演日志文件的大小設計,應考慮檢測點出現(xiàn)的頻率以及檢測點應避開數(shù)據(jù)庫處理數(shù)據(jù)的高峰期。

          2.3.2 重演日志文件組的個數(shù)

            在ARCHIVELOG模式下時,適當增加重演日志文件組的個數(shù),可以降低數(shù)據(jù)庫存檔日志文件的頻率。

          2.3.3 重演日志文件的存檔

            應把重演日志文件的存檔之處設置在磁盤讀寫更快的物理設備上。這樣可以減少日志文件的存檔時間。

          2.4 回滾段的優(yōu)化設計

          2.4.1 回滾段數(shù)目的設計

            要考慮數(shù)據(jù)庫需要支持的并發(fā)事務的數(shù)目,因為每個回滾段有其所能支持的最大事務數(shù),如果回滾段數(shù)目不夠多,則有些新事務被迫要等待,將影響數(shù)據(jù)庫的性能。

          2.4.2 回滾段大小的設計

            要考慮該回滾段能容納數(shù)據(jù)庫可能的最大事務的回滾項數(shù)。

          2.5 優(yōu)化數(shù)據(jù)庫使用的內存配置

            要調整數(shù)據(jù)庫的高速緩沖區(qū),共享池、重演日志緩沖區(qū)和進程全局區(qū)的大小平衡問題。

          3 優(yōu)化應用程序

          3.1 采取統(tǒng)一的SQL程序

            因為ORACLE在執(zhí)行SQL文時,首先將當前要執(zhí)行的SQL文與公共區(qū)域中保存的先前執(zhí)行過的SQL文進行比較,SQL文相同時,就會跳過當前要執(zhí)行的SQL文的解析處理,這樣通過減少解析次數(shù)就加快SQL文的執(zhí)行速度。

          3.2 選取合適的SQL代碼

            在進行數(shù)據(jù)庫操作時,同一結果可以用很多方法來實現(xiàn)。我們應當選取合適的SQL代碼,使其更容易明了,并且運行速度更快。

          3.3 明確列名

            使用SELECT取得的列名一定要明確指定,并且應當使抽出的記錄要盡量少。用SORT等的場合,因為ORACLE將必要的列的值放到WORK領域,因此減少列數(shù)也就節(jié)約了I/O回數(shù)。

          3.4 注意結合索引的順序

            由于列的順序不同而導致索引的作用效果不同。例如:(AGE,ADDRESS)順序的結合索引。

          WHERE AGE=28 AND ADDRESS="BEI JING" &結合索引有效
          WHERE AGE=28 &結合索引有效
          WHERE ADDRESS="BEI JING" &結全索引無效

          3.5 注意WHERE的使用

          3.5.1 索引列不要使用函數(shù)

            由于索引列一旦使用了函數(shù),索引就會變無效,因此在能用索引的情況下,盡量改變程序來利用索引。如:

          WHERE SUBSTR(TELNO,2,2)="88"改為WHERE TELNO LIKE "88%"較好。

          3.5.2 索引列不要使用NOT

            由于索引列一旦使用不等于,索引就會變得無效,最后導致速度變慢。

          3.5.3 不要用NULL

            如果用了NULL,索引就會無效,變成全表檢索,影響處理速度。

          3.5.4 不要對索引列進行計算

            如果對索引列進行計算,索引就會無效,也后導致速度變慢。

          4.結束語

            本文所提出的優(yōu)化方法,能夠起到提高ORACLE數(shù)據(jù)庫性能以及提高ORACLE應用程序執(zhí)行效率的作用。這僅是個人在實際工作中的經驗總結,希望能夠對廣大同行起到一定幫助作用。

          主站蜘蛛池模板: 扬中市| 新巴尔虎左旗| 融水| 建阳市| 民县| 黄大仙区| 承德市| 手机| 崇明县| 长宁县| 新闻| 苏尼特右旗| 佛山市| 麻城市| 宜州市| 体育| 扬中市| 方山县| 怀集县| 来凤县| 泗水县| 武定县| 鹤山市| 丹凤县| 阳春市| 宜黄县| 潜山县| 桦南县| 大洼县| 洛川县| 修武县| 进贤县| 视频| 莆田市| 吴桥县| 砀山县| 五家渠市| 桐庐县| 禹城市| 祁东县| 中卫市|