资讯专栏INFORMATION COLUMN

一个简单的参数调整数据库整体性能提升n倍

IT那活儿 / 2174人阅读
一个简单的参数调整数据库整体性能提升n倍

点击上方“IT那活儿”,关注后了解更多精彩内容!!

事件背景



某驻场客户一单机环境12.2.0.1数据库要进行补丁升级。登录服务器做变更前准备。登录服务器发现服务器异常卡顿,查看top发现负载并不是很高。抓取awr报告发现数据库top10等待延迟在几千毫秒,与客户沟通了解此类事件一直存在,磁盘更换成全闪盘此类事件也没有明显改观,应用没有反馈性能问题,因此一直保持原状。Top10截图如下:

分析处理过程



当看到此类事件,首先考虑的是磁盘、网络等是否正常,与客户进行沟通了解排出此类问题,那么就需要从其他角度来思考这个问题,接着进行下一步分析。
从log file switch (checkpoint incomplete) 等待事件可以了解到,在日志进行切换的时候,buffer cache中的脏块还来不及写入到磁盘中,checkpoint未完成。只能等待buffer cache中的脏数据写入到磁盘才能完成日志切换。了解到这里我们就需要进一步判断是什么原因导致的dbwr写延迟这么高。
从下图不同功能模块的IO负载情况,我们看到DBWR延迟并不是很高。好像跟我们的分析有点对不上。
在awr报告中接着往下搜有关dbwr进程的信息,我们发现如下内容。到这时好像是发现了问题的具体,发现这里异步IO占比活动回话有点高。
为了进一步判断是否是异步IO问题,我们查看awr报告中的后台等待事件来进一步判断问题。这里我发现等待事件在一个小时内的awr报告中接近5000s,延迟567.从这里我判断是该系统异步IO功能没有打开。通过V$IOSTAT_FILE视图以及SHOW PARAMETER filesystem_options来进一步验证了我的判断。

问题处理以及分析



通过上述的分析,定位到数据库的异步IO未开启,导致系统性能问题,这种解决方式很简单,alter system set filesystem_options=setall scopt=spfile; setall参数相当于打开直接Direct I/O + Async I/O。然后重启实例就可以打开单实例数据库的异步IO与直接路径 I/O。设置这个参数之后,就会直接跨过文件系统高速缓存直接从磁盘中读取数据。这里需要注意的是在RAC环境下因为我们使用的是ASM磁盘,是不需要考虑这个异步IO的问题。
数据库更新补丁后导致DBMS_AWR_REPORT_LAYOUT和DBMS_SWRF_REPORT_INTERNAL失效导致awr报告无法获取,因此进行对比,下面两张截图是我通过SQL手工抓取的同一时间点的top10,从下面两张截图看到log file switch (checkpoint incomplete)等待事件已经不在top10。当然该数据库还存在SQL性能方面的问题。需要进一步进行调优,那也是后话了。
调优前:
调优后:

本 文 原 创 来 源:IT那活儿微信公众号(上海新炬王翦团队)


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129689.html

相关文章

  • 基于文件存储UFSPytorch训练IO优化实践

    摘要:我们在协助某客户排查一个文件存储的性能时发现,其使用的训练性能和硬件的能力有很大的差距后面内容有具体性能对比数据。但直接缓存数据在集群规模上升之后肯定是不现实的,我们初步只缓存各个训练文件的句柄信息,以降低元数据访问开销。我们在协助某AI客户排查一个UFS文件存储的性能case时发现,其使用的Pytorch训练IO性能和硬件的IO能力有很大的差距(后面内容有具体性能对比数据)。让我们感到困惑...

    Tecode 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<