一
.我們可以通過配置
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
推薦的統計顧問,在正常運算元據庫半小時之後
selectname,size_for_estimate,v$db_cache_advice.estd_physical_reads
from
v$db_cache_advice
where
block_size='
8192
'and
advice_status='
on';
得到推薦的大小
selectobj.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 systemsetdb_cache_size
=300m;
alter system
setdb_keep_cache_size
=150m; 保持區
alter system
setdb_recycle_cache_size
=50m; **區
將表分配給保持區
altertable
col_cust storage (buffer_pool keep);
使用語句
selectowner,segment_type,segment_name,buffer_pool
from
dba_segments
where
buffer_pool !='
default
';
可以檢視分配情況
select name,block_size,current_sizefrom 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效能調整優化
一 引言 效能測試與分析是軟體開發過程中介於架構和調整的乙個廣泛並比較不容易理解的領域,更是一項較為複雜的活動。就像下棋遊戲一樣,有效的效能測試和分析只能在乙個良好的計畫策略和具備了對不可預料事件的處理能力的條件下順利地完成。乙個下棋高手贏得比賽靠的不僅僅是對遊戲規則的認識,更是靠他的自己的能力和不...