转--Keep小表到内存,提高访问速度

Keep小表到内存,提高访问速度

俩小表,频繁更新,老出现等待

干脆keep到内存里,避免物理读,提高性能

使用到参数buffer_pool_keep

Oracle的高速缓冲区其实可以分成三个不同的子池

默认池

Keep

Recycle

Keep中可以保留经常使用的数据,使其不被老化调,提高命中率;recycle相反。默认数据存放在默认池中

数据库版本

SQL> select * from v$version;

BANNER

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

Oracle9i Enterprise Edition Release9.2.0.8.0 - 64bit Production

PL/SQL Release9.2.0.8.0 - Production

CORE 9.2.0.8.0 Production

TNS for Solaris: Version9.2.0.8.0 - Production

NLSRTL Version9.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字段的值进行统计而获得
原则上讲,热的索引和表,无论大小都可以放到内存中

猜你喜欢

转载自juji1010.iteye.com/blog/1463577