Keep小表到記憶體,提高訪問速度

安佰勝發表於2010-09-08

Keep小表到記憶體,提高訪問速度

 

倆小表,頻繁更新,老出現等待

乾脆keep到記憶體裡,避免物理讀,提高效能

使用到引數buffer_pool_keep

 

Oracle的高速緩衝區其實可以分成三個不同的子池

預設池

Keep

Recycle

 

Keep中可以保留經常使用的資料,使其不被老化調,提高命中率;recycle相反。預設資料存放在預設池中

 

資料庫版本

SQL> select * from v$version;

 

BANNER

----------------------------------------------------------------

Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production

PL/SQL Release 9.2.0.8.0 - Production

CORE    9.2.0.8.0       Production

TNS for Solaris: Version 9.2.0.8.0 - Production

NLSRTL Version 9.2.0.8.0 - Production

 

Sga分配,Variable Size有足夠空間

SQL> show sga

 

Total System Global Area 2635566408 bytes

Fixed Size                   732488 bytes

Variable Size             704643072 bytes

Database Buffers         1929379840 bytes

Redo Buffers                 811008 bytes

 

Keep池已經分配

SQL> show parameter keep

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

buffer_pool_keep                     string

control_file_record_keep_time        integer     7

db_keep_cache_size                   big integer 33554432

 

keep表到記憶體中

alter table tbl_a storage (buffer_pool keep);

alter table tbl_b storage (buffer_pool keep);

keep索引到記憶體中

 alter index IND_AA storage (buffer_pool keep);

 

查詢被存在於keep池中的表

SELECT BUFFER_POOL,table_name FROM DBA_Tables where BUFFER_POOL<>'DEFAULT';

 

BUFFER_ TABLE_NAME

------- ------------------------------

KEEP    TBL_A

KEEP    TBL_B

 
使用keep表到記憶體的方式可以顯著緩解
buffer busy wait
cache buffer chains
等待事件的出現
 
至於如何確定應該keep的物件可以通過對x$bh 檢視中tch欄位的值進行統計而獲得
原則上講,熱的索引和表,無論大小都可以放到記憶體中。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13177610/viewspace-672981/,如需轉載,請註明出處,否則將追究法律責任。

相關文章