Oracle效能優化調整 調整緩衝區快取記憶體

2021-06-05 15:49:50 字數 3610 閱讀 4404

.我們可以通過配置

shared pool(

保證使用者在記憶體中查詢到已經快取的語句

)改進效能;

還有乙個重要的方法就是

:使使用者可以在記憶體找到他們所請求的資料

! 這就需要通過

database buffer cache(

資料庫緩衝區的快取記憶體區

)來實現。

buffer cache

是sga

的乙個元件,用來快取使用者最近在資料庫中訪問過的段資料塊的副本。這些副本和它們在磁碟上的對應塊是同步的

! 如果不同步,就是所謂的髒緩衝區! 從

cache

往磁碟上寫,我們稱之為寫盤。

管理髒緩衝區的機制叫做

dirty list(

髒列表)

或write list(

寫列表)

。這個列表裡面跟蹤已經

insert,update,delete

但是還沒有寫盤的語句。最終的寫盤工作由

oracle

後台程序

database writer(dbw0)

完成。buffer cache

也是由一

lru演算法來管理。

*fts(

全表掃瞄期間

)表緩衝區直接放在

lru的最近最少使用那端。二.

測量database buffer cache

的效能

select1-

((physical.value

-direct.value

-lobs.value)

/logical.value)

"buffer cache hit ratio"

from

v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical

where

physical.name ='

physical reads

'and

direct.name='

physical reads direct

'and

lobs.name='

physical reads direct (lob)

'and

logical.name='

session logical reads

';

上述語句當

>90%

實說明調整充分的。命中率是高的!三.

改進database buffer cache

的效能1.

最簡單的方法就是加大它的大小。佔

sga的

45%比較合適!幾個引數

(1).db_block_size

主資料庫塊大小

預設是8k

在建立完資料庫之後就不能改變

(2).db_cache_size (

預設緩衝區池

) 預設

48m我們主要修改這個引數提高效能

alter system set db_cache_advice=on;

使用oracle

推薦的統計顧問,在正常運算元據庫半小時之後

select

name,size_for_estimate,v$db_cache_advice.estd_physical_reads

from

v$db_cache_advice

where

block_size='

8192

'and

advice_status='

on';

得到推薦的大小

select

obj.owner,obj.

object_name

,obj.object_type,

count

(distinct

bh.block#) "num. buffers"

from

dba_objects obj,v$bh bh

where

obj.

object_id

=bh.objd

andowner !='

sys'

group

byobj.owner,obj.

object_name

,obj.object_type;

上述這段語句可以檢視哪些物件正快取再

buffer cache

中,正使用了多少個

buffer cache

緩衝區。

(3).

使用多個緩衝池

alter system 

setdb_cache_size

=300m;

alter system

setdb_keep_cache_size

=150m; 保持區

alter system

setdb_recycle_cache_size

=50m; **區

將表分配給保持區

alter

table

col_cust storage (buffer_pool keep);

使用語句

select

owner,segment_type,segment_name,buffer_pool

from

dba_segments

where

buffer_pool !='

default

';

可以檢視分配情況

select name,block_size,current_size

from v$buffer_pool;

可以檢視每個

buffer pool

的大小

select name 

"buffer pool",

1-(physical_reads

/(db_block_gets

+consistent_gets))

"buffer pool hit ratio

"from v$buffer_pool_statistics order by name;

可以檢視每個buffer pool

的命中率

keep

越大越好,

recycle

越小越好

(4).

在記憶體中快取表

雖然表可以放在保持區,但是由於

keep pool

也是由lru

控制的,所以當

fts(

全表掃瞄

)時,該錶還是被放在

lru的最近最少使用那端。這樣就有可能被移出。所以我們可以使用

alter table col_cust cache;

的方法把錶變成乙個快取記憶體區表

select owner,table_name from dba_tables where ltrim(cache)='

y'

可以檢視快取記憶體區表的資訊 

Oracle 效能優化調整 三 調整重做機制

當我們優化 oracle效能,檢查了shared pool 和buffer cache 命中率之後 意識到需要使這些結構的變得更大才能改進它們,但伺服器中沒有足夠的記憶體來支援這一改進。同時又發現 redo log buffer 的retry ratio 又很低,表明 redo log buffer...

JBOSS AS 效能調整優化

1 減少日誌的輸出量 jboss 4.2.3.ga server default conf jboss log4j.xml 根據不同的日誌級別 一共有5個等級,越往下輸出的東西越詳細。一般沒什麼特殊情況,調整為warn或者info即可 fatal 0 error 3 warn 4 info 6 de...

Tomcat效能調整優化

一 引言 效能測試與分析是軟體開發過程中介於架構和調整的乙個廣泛並比較不容易理解的領域,更是一項較為複雜的活動。就像下棋遊戲一樣,有效的效能測試和分析只能在乙個良好的計畫策略和具備了對不可預料事件的處理能力的條件下順利地完成。乙個下棋高手贏得比賽靠的不僅僅是對遊戲規則的認識,更是靠他的自己的能力和不...