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

本文介绍如何通过将常用表和索引保留在Oracle数据库的Keep池中来提高性能。通过这种方式可以减少缓存等待时间,提高数据访问速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值