ORACLE資料庫的優化

2021-09-30 22:17:14 字數 2791 閱讀 6042

cpu引數的調整

cpu是伺服器的一項重要資,伺服器良好的工作狀態是在工作高峰時cpu的使用在90%以上。如果空閒時間cpu使用率就在90%以上,說明伺服器缺乏cpu資源,如果工作高峰時cpu使用率仍然恨低,說明伺服器cpu資源還比較富餘。

使用操作相同命令可以看到cpu的使用情況,以般unix作業系統的伺服器,可以使用sar–u命令檢視cpu的使用率,nt作業系統的伺服器,可以使用nt的效能管理器來檢視cpu的使用率。

資料庫管理員可以通過檢視v$sysstat(select*fromv$sysstat wherenamelike'cpu%')資料字典中「cpuused by this session」統計項得知oracle資料庫使用的cpu時間,檢視「os userlevel cpu time「統計項得知作業系統使用者態的cpu時間,檢視「os systemcall cpu time「統計項得知作業系統系統態下的cpu時間,作業系統總的cpu時間就是使用者態和系統態時間之和,如果oracle資料庫使用的cpu時間佔作業系統總的cpu時間90%以上,說明伺服器cpu基本上被oracle資料庫使用著,這是合理,反之,說明伺服器cpu被其它程式占用過多,oracle資料庫無法得到更多的cpu時間。

資料庫管理員還可以通過檢視v$sesstat資料字典來獲得當前連線oracle資料庫各個會話占用的cpu時間,從而得知什麼會話耗用伺服器cpu比較多。(select*fromv$sysstat orderbyvaluedesc)

出現cpu資源不足的情況是很多的:sql語句的重解析、低效率的sql語句、鎖衝突都會引起cpu資源不足。

1、資料庫管理員可以執行下述語句來檢視sql語句的解析情況:

select * from v$sysstat

where name in

('parse time cpu', 'parse time elapsed', 'parse count (hard)');

這裡parse time cpu是系統服務時間,parse timeelapsed是響應時間,使用者等待時間

waite time = parse time elapsed – parse time cpu

由此可以得到使用者sql語句平均解析等待時間=waite time / parse count,這個平均等待時間應該接近於0,如果平均解析等待時間過長,資料庫管理員可以通過下述語句

selectsql_text, parse_calls, executions from v$sqlarea

order by parse_calls;

來發現是什麼sql語句解析效率比較低。程式設計師可以優化這些語句,或者增加oracle引數session_cached_cursors的值。

2、資料庫管理員還可以通過下述語句:

select buffer_gets, executions, sql_text fromv$sqlarea;

檢視低效率的sql語句,優化這些語句也有助於提高cpu的利用率。

3、資料庫管理員可以通過v$system_event(select*fromv$system_event where event like'_atch%';)資料字典中的」latchfree「統計項檢視oracle資料庫的衝突情況,如果沒有衝突的話,latch free查詢出來沒有結果。如果衝突太大的話,資料庫管理員可以降低spin_count引數值,來消除高的cpu使用率。

記憶體引數的調整

記憶體引數的調整主要是指oracle資料庫的系統全域性區(sga)的調整。sga主要由三部分構成:共享池、資料緩衝區、日誌緩衝區。

1、   共享池由兩部分構成:共享sql區和資料字典緩衝區,共享sql區是存放使用者sql命令的區域,資料字典緩衝區存放資料庫執行的動態資訊。資料庫管理員通過執行下述語句:

select (sum(pins -reloads)) / sum(pins) "lib cache" from v$librarycache;

來檢視共享sql區的使用率。這個使用率應在90%以上,否則需要增加共享池的大小。資料庫管理員還可以執行下述語句:

select (sum(gets - getmisses - usage - fixed))/ sum(gets) "row cache" from v$rowcache;

檢視資料字典緩衝區的使用率,這個使用率也應該在90%以上,否則需要增加共享池的大小。

2、   資料緩衝區.資料庫管理員可以通過下述語句:

select name, value  from v$sysstat  where name in ('db block gets', 'consistentgets','physical reads');

來檢視資料庫資料緩衝區的使用情況。查詢出來的結果可以計算出來資料緩衝區的使用命中率=1 - ( physical reads / (db block gets + consistent gets))。

這個命中率應該在90%以上,否則需要增加資料緩衝區的大小。

3、   日誌緩衝區.資料庫管理員可以通過執行下述語句:

select name,value from v$sysstat where name in('redo entries','redo log space requests');檢視日誌緩衝區的使用情況。查詢出的結果可以計算出日誌緩衝區的申請失敗率:

申請失敗率=requests/entries,申請失敗率應該接近於0,否則說明日誌緩衝區開設太小,需要增加oracle資料庫的日誌緩衝區。

Oracle資料庫優化

1.使用索引 當sql中含有max min order by 時增速明顯。建立索引應用於join where order by排序的字段上,避免建立在含有大量重複的字段上,例如某個具有列舉型別的字段,避免索引所在的字段含有 null 值 索引會降低 insert update 的速率 2.選取最適用...

oracle資料庫的效能優化

oracle資料庫的效能調整 強力推薦,本文詳細介紹了什麼情況下需要調整系統引數中的哪個引數,其中查詢語句都經過本人測試,有一句不明白的,希望 高手給予修改辦法。oracle是乙個高效能資料庫軟體。使用者可以通過引數的調整,達到效能的優化。效能優化主要分為兩部分 一是資料庫管理員通過對系統引數的調整...

Oracle資料庫的優化設計

摘要 主要從大型資料庫oracle環境四個不同級別的調整分析入手,分析oracle的系統結構和工作機理,從不同方面較全面地總結oracle資料庫的優化調整方案。中圖分類號 tp3文獻標識碼 a 文章編號 1671 7597 2008 0720043 01 oracle資料庫中資料訪問效能的改善,可以...