?

信息系統Oracle數據庫性能優化研究

2014-10-21 19:57馮育棟
計算機光盤軟件與應用 2014年24期
關鍵詞:Oracle數據庫性能優化信息系統

摘 要:隨著計算機網絡系統快速發展,不斷增加的客戶端數量對數據庫規模提出新要求。從實況來看,應用數據庫的響應速度在不斷下降,各種性能問題逐漸突出。各種完善措施僅僅是階段性的,而且成本也比較高,極難提升系統的整體運行效率及性能目標,因此優化數據庫系統性能對整個系統正常運行具有重要作用。本文是筆者結合常州市房產地理信息管理系統中日常維護及應用Oracle數據庫的相關經驗,分析優化提升信息系統Oracle數據庫的性能。

關鍵詞:信息系統;Oracle數據庫;性能優化

中圖分類號:TP392

從我國實況來看信息系統還存在各種不足,比如怎樣充分發揮計算機系統資源,怎樣確保用戶的服務質量及響應速度等。因此,研究優化Oracle數據庫的性能具有適用價值。

1 信息系統Oracle數據庫性能優化

筆者就從Oracle數據庫系統中選擇I/O、內存、SQL語句以及網絡性能方面入手,分析這些組成部分在運行中性能發送的一些問題,并且針對這些問題提出合理的優化措施。

1.1 對內存進行優化

優化內存比較常用方法就是調整系統的全局區(SGA)。具體操作就是調整內存中各種組件,包含JAVA池、緩沖區高速緩存等,對內存結構進行調整時需要加大SGA大小,但是必須要確保SGAS長度一定在實際所用內存范圍之中。

1.2 調整共享池

共享池主要有兩個部分組成,即高速緩存和數據字典緩存。其參數就確定了共享池的大小。而在高速緩存模塊中又是由SQL語句文本,執行計劃以及PL/SQL塊、JAVA類共同組成。將“select namespace,gethitratio from v$librarycache”輸送到執行欄目中,就能夠從數據庫中獲取到緩存的統計信息。在該執行語句中gethitratio主要是實現查詢對象的句柄標識名字和次數之間比率。在該數據庫中,如果該比率低于了95%,就要進行調整。其查詢語句是“select sum(pins-reloads)/sum(pins)*100 from v$librarycache”,通過執行該局于就可以得到高速緩存命中率。數據字典的緩存就是把數據字典中所含的各種信息存儲進去。SQL語句查詢對象信息時是通過數據字典進行高速存取,降低了不緩存之時從數據字典中查詢的次數,通過這種查詢方式就能夠提升其性能。而且對v$rowcache動態性能視圖進行查詢,可以得到數據字典中緩存相關信息,輸入執行語句“select(sum(gets-getmisses))/sum(gets) from v$rowcache”,通過執行后就可以得到數據字典中的緩存命中率。一旦最終結果值低于85%,必然要增大共享池容量才可以。

1.3 調整緩沖區的高速緩存

在SGA中,高速緩存是重要的組件之一,在執行保持之時高速緩存區就是負責對磁盤中相關數據進行讀取、拷貝,保持服務器就能夠對所有拷貝塊進行共享。假如該服務器要得到數據塊,就會先到高速緩存之中去查詢所需數據,如果需要的數據在這個緩沖區之中,那么該進程就可以從高速緩沖區之中直接讀取所需數據,如果數據并未在這個高速緩存之中,必然會從磁盤中相關數據文件進行讀取,同時還將所讀取數據存儲進高速緩存之中,之后這些存儲的數據就能夠被服務器的進程使用。因此要盡可能讓進程讀取緩沖區的高速緩存中數據,并且經過相關的查詢語句就可以執行,還能夠通過查詢得到使用高速緩存各種情況。

1.4 調整重做日志緩沖區

重做日志的緩沖區,也就要在內存中對高速緩存進行重做。一般情況下,該緩沖區的容量有1MB就可以的。但是該緩沖區一旦占據的空間三分之一,就會發出“rollback”和“commit”的命令,或者將DBWn進程寫進到LGWR之中,通過這種方式就可以重做日志的緩沖區,將磁盤中重新寫入內容。如果要想恢復數據庫,必須要通過重做日志的緩沖區之中各種項目,這一種操作非常重要。要查詢重做日志緩沖區中效率,輸入相關的查詢語句就能夠查詢結果,最終查詢結果值只有接近0才正常,假如這個值不斷的增大,就要適當增大log_buffer大小。

1.5 優化I/O

事實上,影響Oracle數據庫性能一種主要原因就是磁盤I/O,一旦解決好了I/O,就能夠有效提升數據庫性能,配置數據庫性能準則即為盡可能的降低磁盤I/O及平衡多個磁盤的驅動器,并且還要盡可能使用本地管理的空間,對動態視圖進行查詢就可以得到數據文件中的I/O 性能。在平衡I/O,能夠采用的策略主要有如下幾種:

(1)把訪問次數比較多的數據文件促進獨立的磁盤上。

(2)給用戶數據創建出單獨的表空間,并且把這個表空間單獨放到system表中。

(3)有幾個數據文件存在于同樣表空間之中,就要存放到不同的磁盤之中。

(4)索引應該處于獨立表空間中,還應該把索引以及表的數據存放至不同磁盤之中。

(5)構建出臨時的表空間,用來實現排序操作,這樣就能夠有效阻止數據庫中碎片進入表空間中,同時創建獨立表空間給回滾段。

(6)盡可能做大日志文件,避免切換日志過于頻繁;同時重做日志文件不要和數據庫文件放進同一個磁盤中,降低磁盤之間的競爭。

1.6 優化CPU

當數據庫中的I/O操作到了最低的程度,同時也分配了足夠的內存,但是應用軟件依然遭到CPU約束。優化CPU目標就要讓CPU盡可能滿足用戶所需,同時盡可能減小等待以及額外的開銷影響到CPU,并且服務器能不能夠正常的工作直接關系著CPU,當工作高峰CPU使用率處于90%標識著服務器具有良好工作狀態。但是假如空閑之時CPU的使用率超過了90%,說明服務器中的CPU資源不足。如果出于工作的高峰,CPU的使用率依然比較低,這就說明服務器中的CPU資源比較充足。

在運行中,管理數據庫人員只要查詢數據字典中相關統計項,就可以查詢Oracle 數據庫使用CPU所占據時間,同時將相關查詢語句輸入到執行程序中,就可以獲取到該操作系統使用了CPU所占據的時間,當然操作系統使用時間也就是用戶態+系統態的時間總和。數據庫占據了時間超過了總時間90%,這就說明服務器之中CPU幾乎都讓Oracle數據庫占據了,表明運行良好;如果其他各種程序將CPU資源全部占有,Oracle數據庫必然無法活兒更多的CPU資源及時間。查詢v$sesstat數據字典就能夠知道目前所連接的Oracle 數據庫中每一個回話所占用CPU時間,就能夠知道會話所占用服務器CPU的時間情況,以及導致CPU資源缺乏根源,事實上重解析SQL語句,鎖沖突等均可能造成CPU資源嚴重不足。管理人員將相關查詢語句輸入,該語句能夠查詢解析SQL語句的情況,執行語句中的parse time cpu就表示出系統所用時間,執行語句中的parse time elapsed為響應時間,而用戶等待的時間采用公式可獲取。而且從該公式之中還能夠得到解析SQL語句中平均等待的時間,如果這個平均值靠近0,就表明系統正常,一旦等待解析的平均時間較長,就要從中查詢解析效率比較低,應該優化相關的語句,同時還應該改變Oracle中的參數,通過參數來增加高速緩存的光標數值。當然,數據庫的管理人員還能夠采取查詢語言(select buffer_gets, executions, sql_textfrom v$sqlarea),而且該查詢語句還能夠對低效率的SQL語句進行查詢,對該語句進行優化同樣能夠提升CPU利用效率。

1.7 優化網絡性能

數據庫的應用不斷增加,自然網絡這個承載數據庫服務器的平臺至關重要,直接影響著用戶發送數據。因此,調整網絡性能也是必然趨勢,而優化網絡就需要盡可能降低網絡中數據流量,從而降低了網絡資源的使用。

1.7.1 Oracle 網絡協議

Oracle數據庫比較常用的網絡協議為SQL*Net或者Net 8,該協議處于七層開放式的回話層中,將透明連通性提供給Oracle服務器與客戶端。透明連通性就是通過接口層SQL*Net/Net 8接收來自Oracle應用的SQL語句。而且按照相關的標準格式打成包,同時把該包傳送至數據庫。SQL*Net/Net 8主要是用來負責構建及維護客戶和服務器間的網絡會話。

1.7.2 檢測網絡性能的方法。數據通過了網絡程序之后必然會出現延遲,因此就需要優化其性能,才能夠有效保障網絡的吞吐量,才能夠降低網絡的流量。從使用現狀分析可知,要想非常精確的確定出網絡的延遲十分困難。但是在Oracle數據庫中設計了三個動態性能表,這些表就能夠用來測量出網絡延遲,這些表分別是v$session_event,v$session_wait與v$sesstat。

(1)v$session_even,該操作主要是操作時Oracle的等待時間,該值就可以多網絡效率進行有效評估。

(2)v$session_event;將目前正在運行的會話(等待事件)全部列出來,所謂等待事件就是說明共享或者前臺進程中正處于等待的消息。只要存在等待事件,一定要查詢等待事件是不是被Oracle接收或者被客戶端發送,而且還能夠查該表是不是意外被中止,只要客戶端發出消息就能夠確定出Oracle是否已經作出回應或者依然在等待。

(3)通過v$sesstat查看已經接收或者發送到客戶端的字節數,還能夠查詢到客戶端傳遞過來的請求數目。

2 結束語

筆者依據自身經驗,做了如上Oracle數據庫相關優化探討。但是該分析屬于一項比較復雜工作,涉及到多個方面,不但要具備扎實數據庫技術,還要非常熟悉操作系統、硬件設備以及機器結構等各個方面。筆者全面了解了Oracle體系結構,并且探討了對該體系結構的優化,包含了優化I/O、優化內存等等,從而更確保了房產信息系統的實時監控。

參考文獻:

[1]翟巖龍,宿紅毅,戰守義.數據庫性能監控體系的研究與應用[J].計算機科學,2009(11).

[2]王娜,宿紅毅,白琳等.數據庫性能監控分析系統的設計與實現[J].計算機工程,2010(24).

[3]滕永昌.Oracle10g數據庫管理系統[M].北京:機械工業出版社,2012.

[4]楊華千,劉勇國,楊德剛,廖曉峰.Oracle的存儲體系結構及其對象空間分配研究[J].計算機科學,2013(09).

作者簡介:馮育棟(1982.09-),男,江蘇靖江人,科員,本科,研究方向:信息系統管理維護。

作者單位:常州市房產登記中心,江蘇常州 213003

猜你喜歡
Oracle數據庫性能優化信息系統
企業信息系統安全防護
基于區塊鏈的通航維護信息系統研究
信息系統審計中計算機審計的應用
SQL Server數據庫性能優化的幾點分析
基于SG-I6000的信息系統運檢自動化診斷實踐
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合