oracle缓存池使用解析
来源:互联网 发布:windows dock软件 编辑:程序博客网 时间:2024/05/18 12:34
oracle有三种类型的缓存池,分别是default,keep和recycle。默认情况下只会使用default缓存池,另外两种需要额外配置。
keep缓存池相当于是一直很热的default缓存池,缓存池里的数据会一直保留,直到被其他使用该池的数据抢占,并且是使用先进先出的队列使用。
recycle缓存池相当于是一直很冷的default缓存池,里面的数据会很快被清理。
一般情况下只需使用default缓存池即可满足需要,有时为了进一步提高效率,在了解表的使用模式的情况下,可以使用keep池来减少数据库物理读的数量,显著提高效率,这一切都建立在对数据使用模式很熟悉的情况。
使用keep缓存池
首先查看内存分配情况
show parameter memory_target;show parameter sga_target;show parameter db%cache_size;
这是在11g的版本上的情况,如果使用了自动内存管理,sga_target,db_cache_size,db_keep_cache_size可能都是没有设置值的。
直接设置db_keep_cache_size,如果不能成功可能需要设置一个sga_target下限值,然后再设置db_keep_cache_size。
要使用keep缓存池还需要设置表的buffer_pool存储属性(创建表时或者直接修改存储属性)
alter table xxx storage(buffer_pool keep);alter table xxx modify partition part0 storage(buffer_pool keep);
设置完毕按理来说就可以开始使用keep缓存池了,一般的小量数据查询现在已经可以使用keep池了,但是全表扫描还不会使用keep缓存池,这是为什么呢,因为11g开始对全表扫描会使用一种direct path read技术,直接将数据从磁盘读到pga,绕过缓存,也就当然不会将数据放在keep缓存池了。
由两个隐藏参数控制direct path read技术是否使用,_small_table_threshold和_serial_direct_read。默认是开启direct path read的,当表小于_small_table_threshold时,所读数据会放在数据库缓存里。
直接设置这两个值都不是很理想的方案。
如果想要将一个设置了keep的表的块全部装入keep缓存池里,可以使用一个技巧,使用索引进行全表扫描,强迫数据库将数据放到keep缓存池里。
select /+ index(test_keep idx_keep) / count(*) from test_keep;
keep缓存池使用还有一个问题,如果是分区表某些分区是keep,某些是default,如果使用全表扫描的查询如果包含了keep的数据,也有default数据,则还是由于direct path read技术,已经在keep缓存里的数据会被无视。
- oracle缓存池使用解析
- ORACLE SAVEPOINT使用解析
- ORACLE SAVEPOINT使用解析
- ORACLE SAVEPOINT使用解析 .
- android app 缓存 ---- android 文件缓存使用流程解析
- Oracle 表缓存(caching table)的使用
- oracle insert 使用append提示跳过缓存
- 使用JDBC连接Oracle数据库和使用连接池连接Oracle数据库的代码解析
- jQuery数据缓存$.data 的使用以及源码解析
- Android使用本地缓存解析远程服务器JSON数据
- [简单易懂]VideoCacheView使用解析,强大的视频缓存类
- Android DiskLruCache磁盘缓存完全解析及使用
- 解析:怎样使用Oracle的DECODE()函数
- oracle的nvl函数的使用解析
- oracle 索引不能使用深入解析
- Oracle Coherence中文教程二十一:使用缓存事件
- Oracle Coherence中文教程二十三:使用连续查询缓存
- Oracle Coherence中文教程二十一:使用缓存事件
- TCP/IP一些知识点
- 指针 与 swift 中的引用
- PowerShell 与 Linux 的前世、今生、未来
- Java多态和实现接口的类的对象赋值给接口引用的方法
- 图论 补图最短路->bfs+set
- oracle缓存池使用解析
- LintCode:买卖股票的最佳时机 III
- 博客搬家了
- android中MessageQueue , Message , Looper , Handler(三)
- .NET Core与.NET Framework、Mono之间的关系
- powerdesigner 物理模型导出sql(mysql),将name添加为注释的方法
- Linux基础目录处理命令 mkdir cd pwd rm cp mv
- 并查集 学习笔记
- Select Sort & Bubble Sort