Oracle數據庫系統-性能優化_第1頁
Oracle數據庫系統-性能優化_第2頁
Oracle數據庫系統-性能優化_第3頁
Oracle數據庫系統-性能優化_第4頁
全文預覽已結束

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Oracle數據庫性能優化要提高應用系統的性能,在維持現有硬件平臺不變的情況下,主要采用的方法由以下幾種:調整操作系統參數,提高操作系統的管理性能;調整數據庫管理系統的參數,提高數據庫管理系統的性能;修改應用程序,提高應用程序的運行效率。一、ORACLE數據庫的內存結構本文將著重對SGA的結構進行介紹:SGA通常又被稱作SharedGlobalArea,包括以下幾個共享區域:數據緩存(theDatabasebuffercache)數據緩存存放從數據庫文件中讀取的數據,可分為剩余緩存(Freebuffer)、正在使用的緩存(Pinnedbuffer)、已使用緩存(Dirtybuffer)。日志緩存(redologbuffer)存放數據庫已改變的信息。共享存儲池(sharedpool)共享存儲池主要由三個方面構成:LibrarycacheLibrarycache包括共享SQL區、用戶自有SQL區、PL/SQL過程和程序包及控制結構;DictionaryCache存放數據庫字典信息,如:表及視圖名、列名及數據類型、各用戶的存取權限;Controlstructures

請求及響應隊列(requestandresponsequeues)(僅用于多線索模式)其他(othermiscellaneousinformation)二、ORACLE內存的工作機制當用戶請求被接受后,ORACLE的內存分配將分以下幾個步驟進行:1.首先檢查共享SQL區有無該SQL語句,如有在使用該SQL區執行用戶的SQL語句(稱作一次librarycachehit),否則為該SQL語句分配共享SQL區(稱作一次librarycachemiss),同時為該語句分配自有SQL區。2.檢查Dictionarycache中有無要訪問的表/視圖信息,若無則將其讀入Dictionarycache中(稱作一次rowcachemiss)。3.檢查數據緩存(Databasebuffercache),有無要操作的數據,如有則使用當前的緩存(稱作一次databufferhit),否則,將按下列步驟為該數據請求新的緩存(稱作一次databuffermiss):1)搜索least-recently-used(LRU)list,若發現dirtybuffer則寫入dirtylist并繼續搜索,如發現freebuffer則將其分配給該用戶,同時將該buffer移至most-recently-used(MRU)list,若未能搜索到freebuffer,則觸發DBWR進程將一些dirtybuffer寫入磁盤,并將這部分dirtybuffer釋放為freebuffer。2)從數據文件中將要操作的數據讀入buffercache中;4.如果用戶執行的是INSERT、DELETE、UPDATE等操作,系統將為其分配redologbuffer,用于記錄數據的變更情況,當redologbuffer中無freebuffer時觸發LGWR進程,將redologbuffer中的一些信息寫如數據庫的LOGFILE中。三、內存使用情況分析要確定一個數據庫管理系統中的內存配置的優劣,首先應掌握系統中當前內存的使用情況。ORACLE數據庫為數據庫管理員(DBA)提供了相應的查詢方法,用于查詢數據庫的內存使用情況。要提高系統的性能,DBA應重點檢查以下幾個指標:剩余內存(freememory)select*fromv$sgastatwherename=’freememory’;一般來說,當您在數據庫啟動并投入使用相當長時間后,系統尚有剩余內存空間,說明您的數據庫的SGA設置是足夠的,無需增加SGA空間。內存擊中率librarycache的擊中率selectsum(pins-reloads)/sum(pins)fromv$librarycache;數據字典的內存擊中率

selectsum(gets-getmisses-usage-fixed)/sum(gets)fromv$rowcache;數據共享區的擊中率

selectname,valuefromv$sysstatwherenamein(‘dbblockgets’,’consistentgets’,’physicalreads’);擊中率=1-(physicalreads)/(dbblockgets+consistentgets)注意:以上幾個指標均應在系統運行足夠長時間后進行檢查。ORACLE數據庫的初始化參數文件通常存放在$ORACLE_HOME/dbs路徑下,其文件名為init+數據庫sid、后綴為.ora,如initorcl.ora。其中,影響數據庫內存大小的參數主要有:DB_BLOCK_SIZE:每個數據庫塊的字節數,在數據庫建立時已確定,為1024的整數倍,如2048、4096;DB_BLOCK_BUFFERS:數據庫數據緩存區的數據塊數;SHARE_POOL_SIZE:共享存儲區的字節數;SORT_AREA_SIZE:數據排序區的字節數;當剩余內存(freememory)過少、內存擊中率過低,當librarycache的擊中率或數據字典的內存擊中率低于0.95時,考慮調整SHARED_POOL_SIZE,DB_BLOCK_BUFFER的大小。此外,我們可以根據下面的算法,估算SHARED_POOL_SIZE的大小:SELECTSUM(value)FROMv$sesstat,v$statnameWHEREname=’sessionugamemory’

ANDv$sesstat.statistic#=v$statname.statistic#;該查詢返回的是目前所有用戶進程所占用的SHARED_POOL字節數;SELECTSUM(value)FROMv$sesstat,v$statnameWHEREname=’sessionugamemorymax’

ANDv$sesstat.statistic#=v$statname.statistic#;該查詢返回的是目前所有用戶進程所需占用的SHARED_POOL最大字節數;

我們可據此確定SHARED_POOL_SIZE的初始大小。四、SQL語句執行效率問題1.檢查占用CPU時間比較長的sql語句:selectsql_text,cpu_timefromv$sqlwherecpu_time>1e7orderbycpu_time2.執行效率最差的10條sql語句SELECT*FROM

(

SELECTPARSING_USER_ID

EXECUTIONS

SORTS,

COMMAND_TYPE,DISK_READS,sql_text

FROM

v$sqlarea

ORDERBYdisk_readsDESC)

WHEREROWNUM<10;3.利用V_$SQLAREA視圖提供了執行的細節。(執行、讀取磁盤和讀取緩沖區的次數)selectSQL_TEXT,EXECUTIONS,DISK_READS,COMMAND_TYPE,OPTIMIZER_MODE,SHARABLE_MEM,BUFFER_GETSfromv$sqlarea數據列EXECUTIONS:執行次數DISK_READS:讀盤次數COMMAND_TYPE:命令類型(3:select,2:insert;6:update;7d

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論