数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

用Oracle9i确定数据存储大小


发布日期:2022年08月22日
 
用Oracle9i确定数据存储大小

算数据存储大小一直是大型数据库的关键技术如果一个数据库占用成千上万的字节那么在RAM中计算整个数据库会变得不切实际所以Oracle开发人员必须找到一种计算数据库存储大小的方法从而可以缩小RAM资源中浪费的空间这就意味着为公司的RAM开支节省了很多的费用

Oraclei 提供了一种新的特性即v$db_cache_advice这一特性可以预测数据缓沖存储器中附加数据存储的大小基于这一特性Oracle DBAs能够精确地预测RAM数据存储的最佳大小让我们用一些范例来说明这些功能

如何实现这些功能?

当数据存储容量比较小时随着RAM数据容量的减小磁盘I/O会剧急减小如下图所示

当RAM数据容量上升时磁盘I/O随之减少

然而磁盘I/O的剧急减少也不是趋于无限小当RAM大小达到整个数据库的占有空间时磁盘I/O中多余部分的减少会变得很小(如下载所示)因为此时数据库已经没有可以访问的数据

多余RAM数据空间的下降趋势

作为一种通用的规则系统中可利用资源部分都可以调整RAM资源可以改变到一定的大小以减少一些多余的空间(如下图)这完全可以让Oracle DBA找到最佳的数据库容量大小

RAM数据容量的最佳大小

新推出的DB特性与Oracle 中的相应特性非常相似这一特性使用名为x$kcbrbh的方法来跟蹤数据的容量

与Oracle 模型类似你必须预先为数据存放容量分配RAM空间通过设置initora参数并把db_cache_advice设置为on 或ready就可以实现以上过程使用alter system命令还可以动态地更改这些参数所以当数据库运行时DBA便具备预测功能

既然你必须为db_cache_size预先分配额外的RAM数据容量利用这一功能就可以确定数据容量的最佳大小

一旦db_cache_advice函数被调用而且数据库运行一段时间Listing A 中的查询就会执行预测功能

列表A中的结果在Listing B中显示注意数据的范围是从当前容量大小的百分之十到当前容量大小的两倍

这里你可以看出总共的磁盘I/O没有最大值这也就是典型的大型数据库特性因此也不存在db_cache_size参数的最佳设置当db_cache_size值越大磁盘I/O会变得越小

在db_cache_size中添加块的方法是很简单只要内存容量允许你可以增大db_cache_size的值缓沖块的增加也会导致RAM内存容量的增加通常情况下一个数据库管理系统不会占用一台机器的全部内存所以DBA应该慎重地预测可使用的内存大小并决定缓沖块的最佳选择

一句警告当DBA设置dba_cache_advice=onOracle会从共享的RAM区域偷用空间这样会导致一些不可意料的破坏例如现成的db_cache_size设置为MBOrcale会从共享区域内偷取一定的RAM空间为了避免这些问题DBA应该在initora文件中设置db_cache_advice=ready当这些完成后Oracle会在数据库的启动时间预先分配RAM容量大小

对于更高版本的Oraclei数据库你不仅可以控制缓沖块的数量而且还可以控制每个数据缓沖块的大小

总结

随着Oraclei灵活性的不断增加和功能上的不断完善对于数据库管理人员而言确定SGA区域最佳容量大小是一个新的难题把这一工作处理得当便意味着在RAM资源上节省大量的资金

上一篇:戴尔发SharePlex 优化数据整合与分析

下一篇:Oracle 数据库系统使用经验六则