Oracle效能優化的學習筆記

2021-09-05 14:45:22 字數 1698 閱讀 8236

記憶體優化:

sga包括三個部分組成。資料緩衝區、日誌緩衝區及共享池

資料緩衝區:大小由db_cache_size引數決定。select name,value from v$parameter where name in('db_cache_size','db_block_size','shared_pool_size','sort_area_size');

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

其中理想的情況:physical reads接近為0 也就是說資料全部來自資料緩衝區。

db block gets表示從記憶體讀取資料  consistent gets表示讀取一致性資料。

select child#,sleeps/gets ratio from v$latch_children where name ='cache buffers lru chain';

可以檢測到資料緩衝區是否有空閒,得到的空閒衝突比例應該接近0

資料緩衝區記憶體是否足夠大,效率如何,可以通過計算命中率來確定。用磁碟物理讀的資料與內在緩衝區的資料進行計算,就得出了命中率。一般要求在90%以上,否則必須增加資料緩衝區的大小。

共享池大小由引數shared_pool_size決定。在共享池裡,sql區比資料快取消耗較大的記憶體區域。

select name ,bytes from v$sgastat order by name;

select * from v$sgastat where name = 'free memory';

free memory是空閒記憶體,是共享池中可以使用的位元組數,dictionary cache 是資料字典緩衝區,library cache是庫緩衝區,sql area是sql緩衝區。

空閒百分比 = (空閒記憶體/共享池位元組數)×100% 如果小於20% 則應增大共享池引數shared_cache_size

排序區調整:

select name,value from v$sysstat wehre name like '%sort%";  sorts(memory)表示記憶體排序量, sorts(disk)表示磁碟序量。 

失敗率 = sort(disks)/sorts(memory)  ×100%  排序區的失敗率不得小於5%,否則必須增加排序sort_area_size的大小,使得oracle盡量使用記憶體排序。

磁碟io的調整就是把資料檔案放在多個不同的磁碟上。

減少了io的操作次數就減少了cpu的需求。

下面是我一些實際操作的過程:

alter system db_cache_size=256000000 scope=spfile;

alter system open_cursors=800 scope=spfile;

alter system pga_aggregate_target=128000000 scope=spfile;

alter system sort_area_size=52428800 scope=spfile;

alter system sga_max_size=1024000000 scope=spfile;

alter system shared_pool_size=256000000 scope=spfile;

重啟一下oracle就可以了。注意這裡配置的機器記憶體是4g。

Oracle效能優化的學習筆記

記憶體優化 sga包括三個部分組成。資料緩衝區 日誌緩衝區及共享池 資料緩衝區 大小由db cache size引數決定。select name,value from v parameter where name in db cache size db block size shared pool ...

ORACLE學習筆記 效能優化1

1.查詢正在執行語句的執行計畫 也就是實際語句執行計畫 select from v sql plan where hash value select sql hash value from v session where sid 1111 其中id和parent id表示了執行數的結構,數值最大的為...

ORACLE學習筆記 效能優化4

13.怎麼樣能固定我的執行計畫 可以使用outline來固定sql語句的執行計畫,用如下語句可以建立乙個outline create oe replace outline outln name on select col1,col2 from table where 如果要刪除outline,可以採...