数据库管理-第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中两个比较有趣的配置参数。

老规矩,知道写了些啥。

相关推荐
若兰幽竹4 小时前
【从零开始编写数据库:基于Python语言实现数据库ToyDB的ACID特性】
数据库·python
宇钶宇夕4 小时前
S7-200 SMART CPU 密码清除全指南:从已知密码到忘记密码的解决方法
运维·服务器·数据库·程序人生·自动化
周杰伦的稻香4 小时前
MySQL密码管理器“mysql_config_editor“
数据库·mysql
云朵大王4 小时前
SQL 视图与事务知识点详解及练习题
java·大数据·数据库
czhc11400756635 小时前
LINUX712 MYSQL;磁盘分区;NFS
数据库·mysql·adb
不太可爱的大白5 小时前
Mysql:分库分表
数据库·mysql
十五年专注C++开发6 小时前
hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库
开发语言·数据库·c++·redis·缓存
bianguanyue7 小时前
SQLite密码修改故障排查:RSA加密随机性导致的数据库匹配问题
数据库·sqlite·c#
亚马逊云开发者7 小时前
将 Go 应用从 x86 平台迁移至 Amazon Graviton:场景剖析与最佳实践
linux·数据库·golang
张先shen8 小时前
亿级流量下的缓存架构设计:Redis+Caffeine多级缓存实战
数据库·redis·缓存