暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

Oracle数据库多缓冲配置注意事项

白鳝的洞穴 2021-07-27
685
这段时间华东很热闹,当“烟花”犹豫不决是去上海一大会址逛逛还是先去看看嘉兴南湖上的红船的时候,南京人们正在思考着人生,我咋就“黄了呢?”。作为“皇马”一族,今天是居家自我隔离的第四天了,早上一起床就感觉到无聊的一天又开始了。好在在这个风雨交加的早上,不用趟着水去上班,吃完早饭就可以坐下来静静的写上一段了。
今天聊点Oracle相关的事情,正好这两天在和客户讨论一个数据库迁移的方案,用户准备把数据库从IBM小机上迁下来,想让我帮忙看看现在的系统有些什么问题。看了一些客户发来的数据后,我发现这个系统最大的问题是SQL写的比较烂,DB CACHE的命中率只有80%左右,一个逻辑读只有9万出头的系统,物理读居然有1.2万。正好赶上这套系统的一条IO路径还有点问题,scsi0路径经常报错,系统不慢那才怪了。看数据的时候我还看到了一个十分有趣的事情,这套配置中存在很多不合理地方的系统中居然还使用了multiblock机制。
这套系统居然创建了一个32K块大小的表空间,因此这个实例上专门为这个表空间配置了56M的一个DB CACHE。在这十多年给客户做优化的过程中,我也曾经帮用户创建过32K的表空间,主要是为了解决LOB字段的存储性能问题。更多的时候是创建4K的表空间,用以解决十分严重的索引块的热块冲突问题。看到这里我突然想起来以前经常讨论的一个关于Oracle数据库多缓冲优化的问题。
Oracle的DB CACHE可以设置为多个,这种机制被称为多缓冲机制。多缓冲机制是一种DB CACHE的精细化管理模式,以前还经常用一下,用于提高DB CACHE的性能。这些年这种多缓冲配置用的比较少了,是因为现在物理内存十分大了,配置一个足够大的DB CACHE,大部分问题就都解决了。这种多缓冲配置在物理内存不足,DB CACHE要精打细算的情况下会有十分好的效果。
这是2014年我们团队做的一个优化项目,当时客户的服务器比较老,物理内存不足,存储性能也十分差。为了提高性能,把一部分热表放到一个240M的keep pool里,这个240M的KEEP POOL,虽然只有DEFAULT POOL的1/8,但是产生了超过1/3的逻辑读。这种效率是相当高得,这种配置也取得了十分好得效果。反观刚才得那个例子,配置了一个十分小的56M的32K缓冲池,占用了整个缓冲池大小的0.8%,不过一小时只有34961次buffer gets,几乎可以忽略不计了。这种多缓冲的设置是失败的。
前阵子有朋友和我讨论过关于多缓冲设置的问题,现阶段虽然物理内存比较充足,DB CACHE可以设置的很大,不过多缓冲依然可以在减少热块冲突的时候发挥巨大的作用。这个观点看似有点道理,不过仔细分析一下DB CACHE的算法以及热块冲突产生的原因后,就不难发现这个观点中存在的问题了。热块冲突产生的原因不外乎以下几种:1)某些数据访问十分热,hash chains争用十分严重;2)IO系统特别繁忙,并且性能不好,导致某个会话要访问的数据经常出现正在被另外一个会话读入DB CACHE的过程中;3)需要被访问的块正被另外一个会话以不兼容的方式持有;4)需要访问的块被另外一个会话修改了,并且还没结束。
从这几种常见的BBW来看,BBW和IO性能、并发访问引起的hash chain争用、不兼容的并发访问等有关。而采用多缓冲后,对HASH CHAINS没有任何影响,因此要通过多缓冲来解决BBW问题,恐怕效果也不好。
如果通过十分精细的分析,将热数据放到keep pool中,对于提高db cache的整体访问效率,还是会有一些帮助的。可以进一步的减少物理IO,不过这种物理IO的减少,对于本身DB CACHE命中率已经十分高,并且存储系统IO性能很好的场景下,效果十分有限。在采用多缓冲效果十分有限的情况下,这种情况下采用多缓冲还会给未来的运维带来一个隐患。当放入KEEP POOL中的表的数据量增长,KEEP POOL太小的情况下,KEEP POOL的访问效率会急剧下降。如果放入KEEP POOL的都是很热的数据,那时候会对系统性能产生更大的影响。
在做运维的时候,有时候我们不能仅仅依靠一些理论去做处置,要充分地考虑运维的成本。采用简单的通用方式去管理基本上没有大问题的时候,尽可能少的采用个性化定制的方法去处置。就像本文说的这个案例,即使每小时只有3万多次的BUFFER GETS,依然有200多次的物理读。说明56M的32K 缓冲池已经出现了不足的现象,如果数据量进一步增加,这个SUBPOOL的命中率还会继续下降。这个案例的多缓冲是因为非标准块大小表空间引入的,和设置keep pool不同,不过其关注点是类似的。
文章转载自白鳝的洞穴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论