数据库管理-第123期 Oracle相关两个参数(202301205)

数据库管理-第123期 Oracle相关两个参数(202301205)

最近在群聊中看到俩和Oracle数据库相关的俩参数,一个是Oracle数据库本身的,一个是来自于Weblogic的,挺有趣的,本期研究一下。(本期涉及参数讲解均以Oracle DB 19c或WLS 12.2.1.4.0为准)

1 db_flash_cache_file/db_flash_cache_size

乍眼一看,还以为和闪回有关,但是细看发现是flash cache,查看Oracle Database 19c-Database Concepts-Memory Architecture部分官方文档,这个一个是否开启并配置Flash Cache功能的参数。Flash Cache的体系结构大致如下:

启动Flash Cache(或叫Smart Flash Cache,智能闪存缓存)的目的与内存buffer cache一致,将经常访问的数据块放到缓存里,这里将这部分缓冲区缓存可以位于闪存中。此缓冲区缓存扩展存储在一个或多个闪存磁盘设备上,这些设备是使用闪存的固态存储设备。数据库可以通过在闪存中缓存缓冲区而不是从磁盘读取来提高性能。(这里需要注意的是,该功能只能在Solaris或Oracle Linux上开启)

当Flash cache开启时,DBW可以将一个clean buffer写入闪存缓存,从而实现其内存buffer的重用。数据库将buffer头保存在主存储器的LRU列表中,以跟踪闪存中buffer的状态和位置。如果以后需要这个buffer,那么数据库可以从闪存中读取,而不是从磁盘中读取。

该功能本质是对内存buffer cache的一种容量扩展或者磁盘热数据的升级,使用Flash cache中缓存的buffer仍然需要将对应buffer刷入内存中使用,但是可以通过Flash Card的高性能实现IO层面的加速。

关于Flash Cache的两个参数使用方式如下:

DB_FLASH_CACHE_FILE指定用于数据库智能闪存的闪存内存或表示闪存集合的磁盘组的文件名。最多可以配置16个文件名。

DB_FLASH_CACHE_SIZE指定数据库智能闪存的大小。此参数只能在实例启动时指定。与上面参数内容一一对应,最多16个。大小限制为0(不启用),16M至(2048G-块大小)。

sql 复制代码
db_flash_cache_file = /dev/raw/sda, /dev/raw/sdb, /dev/raw/sdc
db_flash_cache_size = 32G, 32G, 64G
db_flash_cache_size = 32G, 0, 64G

Flash Cache这个参数我是没有用过的,感觉在RAC上意义也不是太大,而我这大多数又在Exadata上。

2 Statement Cache

Statement Cache是Weblogic Server(WLS)中用于自带JDBC连接池的一个配置参数:

To improve performance, WebLogic Server can cache prepared and callable statements used in your applications (enabled by default). When an application or EJB calls any of the statements stored in the cache, WebLogic Server reuses the statement stored in the cache. Each database connection in a data source has it's own statement cache.

为了提高性能,WebLogic Server可以缓存应用程序中使用的准备好的和可调用的语句(默认情况下启用)。当应用程序或EJB调用存储在缓存中的任何语句时,WebLogic Server会重用存储在缓存内的语句。数据源中的每个数据库连接都有自己的语句缓存。

在Configuration: Connect Pool的配置中Statement Cache Type可以指定使用LRU或Fixed方式来选择缓存的语句,而Statement Cache Size则指定每个数据源实例的每个连接要缓存的语句数。

仅仅通过官方文档,我们很容易将Statement Cache理解成WLS中间件层缓存SQL相关数据,然而在MOS文档**What does Statement Cache Size mean? (Doc ID 1298036.1)**中,对Statement Cache如何发挥作用有更加全面、深入的解释:

从MOS文档可以看到Statement Cache本质上还是在数据库层面通过游标来维持对应语句处于open状态,在下一次执行语句时可以直接运行。这个功能并没有将语句的任何信息缓存在WLS中。同时开启该功能,配置不合理还可能出现游标耗尽,OOM等问题。

总结

本期介绍了Oracle DB和WLS中两个比较有趣的配置参数。

老规矩,知道写了些啥。

相关推荐
骆晨学长10 分钟前
基于springboot的智慧社区微信小程序
java·数据库·spring boot·后端·微信小程序·小程序
@月落16 分钟前
alibaba获得店铺的所有商品 API接口
java·大数据·数据库·人工智能·学习
楠枬26 分钟前
MySQL数据的增删改查(一)
数据库·mysql
goTsHgo31 分钟前
从底层原理上解释 clickhouse 保证完全的幂等性
数据库·clickhouse
阿华的代码王国2 小时前
MySQL ------- 索引(B树B+树)
数据库·mysql
Hello.Reader2 小时前
StarRocks实时分析数据库的基础与应用
大数据·数据库
执键行天涯2 小时前
【经验帖】JAVA中同方法,两次调用Mybatis,一次更新,一次查询,同一事务,第一次修改对第二次的可见性如何
java·数据库·mybatis
yanglamei19623 小时前
基于GIKT深度知识追踪模型的习题推荐系统源代码+数据库+使用说明,后端采用flask,前端采用vue
前端·数据库·flask
工作中的程序员3 小时前
ES 索引或索引模板
大数据·数据库·elasticsearch
严格格3 小时前
三范式,面试重点
数据库·面试·职场和发展