在偶然的机会听到了KDB,然后带着好奇和新鲜感体验了一把这个传说中和Oracle 相似度达到99%的数据库。
其中一部分的驱动力在于这个活动的奖品很丰厚,参加活动后可以拿到一个iwatch,确实是很划算的一个活动。
而对于KDB的认识,也是在对比调优中认识到的,其实结果还是大大超出我的预期。
首先来简单说一下背景,我们一共十来个人,分成两队,红队和蓝队,然后红队调优Oracle,蓝队调优KDB,然后使用benchmark在同样的加压条件下的tpcc值作为参考来对比Oracle和KDB
乍一看Oracle这边的人很占便宜,至少调优的基准和方式方法感觉都是熟悉的,不用过多的花时间在熟悉KDB上面,而对于KDB这部分,其实我觉得还是占有一定的优势,因为两队都有专门的人来提供额外的信息咨询,原厂在这方面其实更有说服力,更有经验,支持力度更大,这个调优的玄妙之处就在于我们调试的Oracle系统是一个性能很差的一个环境,里面其实还是埋了不少的机关,需要在有限的时间里把tpcc的值跑上去。
所以分组之后大家简单做了分工,最开始我的脑海中的调优思路是内核调优,参数调优,文件调优,sql调优
结果一上来开始还是有些着急,其实大家的思路最后都是花更多的时间在数据库参数调优上了。
我本来准备先查看hugepage准备先查看一下,看没有调优的空间,结果一看aix的小机环境,配置不同,x86上的方式就不管用了,于是就果断放弃了,这个部分还是要好好补补。
大家抓取性能瓶颈的时候基本大致的一致是sga的部分,结果一时忽略了其实undo的部分是个硬伤,结果回过头来,调整的时候对方的tpcc已经远远领先我们了。这个时候我们所做的调优基本就是设置commit_write为nowait方式,然后调整sga_max_size,sga_target,然后一边开始准备在线调整redo的大小,把原本的redo 50M的日志文件加大到百兆,
抓取的addm报告中更多的是sql语句的调优建议,所以暂时没有深究。
所以第一阶段和第二阶段的调优对比效果还是不理想的。
这一轮下来,大家的士气也受到了影响,我们认真梳理了一下,在参数的调整上有几个层次,
隐含参数
我发现在数据库参数中埋了一个炸弹,就是把一个隐含参数给启用了,参数是_fast_cursor_reexecute而这个参数的默认值是false,所以简单评估之后就把这个值恢复了默认的值
在sga的调整上给了30G的sga,但是查看内存组件的使用情况,shared pool被压缩到了不到2G,在200多G的内存条件下,就把shared_pool的大小设置保持在10G以上,
pga的部分也进行了调整,把pga的大小进行为了一定的调整。
open_cursors的值太低,在1000个并发的条件下,当时的值是300,所以跑不上去,session_cached_cursors的值也比较低,做了小幅度的调整
audit_trail的部分是DB,其实这个部分暂时还没有这个需求,在这种情况下审计部分的开销就不必要了,果断去除,设置为none
对于异步io的设置,filesystemio_options设置为setall,尝试启用异步io和direct io
还有一个坑就是sql_trace给打开了,果断禁用。
对于sql cursor的解析方式,大家还是建议改为similar,这部分也修改了。
在曹组系统级,大家把原有的CPU超线程设置给取消了。原来是4个,改为了默认的2个。
等大体这几个部分完成之后,再去跑分,发现和KDB组的成绩很接近了,一段时间还暂时超过了他们,这个时候才感觉到了一丝动力。
继续调整,抓取的awr报告显示还是存在一定的并发瓶颈,有一些row lock contention,在这个时候我查看了相关的几个表的ini_trans,还是原来的默认值,就简单进行了调整,把ini_trans调大。
后面的部分,在这个基础上再进行调优,大家就相对比较谨慎了,大家纠结比较多的一个地方就是redo的大小,甚至考虑要把它设置为一个极大的值,根据监控的情况,在过去的一个小时内redo切换次数在7次左右,还是可以进行小幅度的调整即可,不过后来大家大胆尝试的把redo设置为一个极大的值,效果反而还是不够理想,所以就果断放弃了。后面的更多精力就没有放在sql语句上,等到发现的时候时间已经不够了,发现其中一个性能瓶颈在于一个slelect max(xxx) from xxx的查询,其实完全可以在关注更多的细节,比如收集统计信息,比如查看index的设置情况,对面的KDB组还甚至考虑了对表进行重新分区,这些细节的调整还是有很大的作用的,非常值得肯定。这些额外的细节和加分点也着实为KDB的tpcc贡献了一部分分数。
最后Oracle和KDB的第三轮跑分结果比较相似,tpcc都在近9万,KDB略微要高一些,浪潮团队的之前的测试结果也基本和这个差不多,了解了KDB和其它数据库的对比测试,跑分的差距还是很大的,KDB的性能还是很高。对于这次优化精力我的总结还是在粒度和细节上功夫下的不够,在调优的方法和方式上,还是需要先从整体再到细节部分,不忽略每一个部分潜在的可能的性能问题。逐步深入,调优的改进之处就会更加有条理。
这种调优方式对我的感触还是很大,因为这种对比pk的方式感受更加直观,对我们分析问题和解决问题是一个非常真实的案例。没有了基准和对比的参考,我们调优的幅度和动力就不会完全发挥出来。看来这种pk的方式可以多推广推广,也非常感谢浪潮本着开放的态度来组织这次活动,无论熟悉还是不熟悉KDB的朋友都会有一些认识和了解,因为时间关系,在集群,容灾,管理方式上还没有进行深入的测试,不过相信结果应该也不赖,相信他们的技术团队在这次活动之后,也经受了很大的压力和考验,可以好好休息一下了。再次感谢。
KDB和Oracle的性能pk小记
时间: 2024-10-29 06:31:06
KDB和Oracle的性能pk小记的相关文章
用PHP连mysql和oracle数据库性能比较
mysql|oracle|比较|数据|数据库|性能 用PHP连mysql和oracle数据库性能比较 测试硬件说明:测试使用的是我的爱机,配置如下:CPU:C433内存:128M硬盘:酷鱼2代20G 测试软件说明:WIN32下用的是windows nt server4,sp5,apache 1.3.12,php3.0.15和php4rc1,mysql 3.22.29,oracle 8.0.5linux下用的是bluepoint linux1.0, apache 1.3.12, php4rc1,m
使用智能优化器提高Oracle的性能极限
oracle|性能|优化 使用智能优化器提高Oracle的性能极限 消耗在准备新的SQL语句的时间是Oracle SQL语句执行时间的最重要的组成部分.但是通过理解Oracle内部产生执行计划的机制,你能够控制Oracle花费在评估连接顺序的时间数量,并且能在大体上提高查询性能.准备执行SQL语句 当SQL语句进入Oracle的库缓存后,在该语句准备执行之前,将执行下列步骤: 1) 语法检查:检查SQL语句拼写是否正确和词序. 2) 语义分析
Swingbench测试云上Oracle RAC性能
Swingbench测试云上Oracle RAC性能 谁说云上不能跑Oracle RAC? 1.测试环境 1.1.测试数据库环境配置 配置 数量 主机名 计算节点 CPU:2C 内存:8G 高效云盘:60G 2 db01/db02 存储节点 CPU:1C 内存:8G 高效云盘:60G 3 cell01/cell02/cell03 SSD云盘 50G 3 1.2.在swingbench机器上开启集群协调器,以及把db01.db02加入到协调器中: ./coordinator –
Oracle数据库性能模型
原文转自:http://www.hellodb.net/2010/06/db-performance-analysis.html 最近一直在思考一个问题:如何为一个数据库建立性能模型?作为一名DBA来说,我们面临的一个巨大挑战是:如何保证数据库的性能可以满足快速变化的应用的需求,如何在数据量和访问量持续增长的情况下,保证应用的响应时间和数据库的负载处在合理的水平下.我们可能会经常面对以下的问题:某个SQL每秒要执行100次,响应时间是多少?某个应用发布后,对数据库的影响如何?所以,评估应用对数据
【性能优化】ORACLE数据库性能优化概述
为了保证ORACLE数据库运行在最佳的性能状态下,在信息系统开发之前就应该考虑数据库的优化策略.优化策略一般包括服务器操作系统参数调整.ORACLE数据库参数调整.网络性能调整.应用程序SQL语句分析及设计等几个方面,其中应用程序的分析与设计是在信 分析评价ORACLE数据库性能主要有数据库吞吐量.数据库用户响应时间两项指标.数据库吞吐量是指单位时间内数据库完成的SQL语句数目:数据库用户响应时间是指用户从提交SQL语句开始到获得结果的那一段时间.数据库用户响应时间又可以分为系统服务时间和
Oracle 常用性能视图一览表(10g)
--*************************************-- Oracle 常用性能视图一览表(10g)--************************************* Advisors Information related to cache advisors v$pga_target_advice v$shared_pool_advice v$pga_target_advice_histogram v$java_pool_advice v$mttr
用Swingbench 测试oracle数据性能报错
问题描述 用Swingbench 测试oracle数据性能报错 PLS-00201: identifier 'ORDERENTRY.NEWORDER' must be declaredORA-06550: line 1 column 7:PL/SQL: Statement ignored 求大神指导
《Oracle数据库性能优化方法论和最佳实践》——第1章 Oracle性能优化漫谈 1.1 从生活场景漫谈性能优化
第1章Oracle性能优化漫谈 1.1 从生活场景漫谈性能优化 Oracle数据库性能优化一直是一个让人既胆怯又兴奋的话题,在初级DBA眼里,这是一个神秘的领域,即使是资深的Oracle DBA,也可能无法描述清楚性能优化究竟要做什么,应达成什么目标.那么性能优化究竟是做什么的呢?简而言之,性能优化就是让我们的工作速度变快,快到让我们满意为止.自然,又有读者会问了,我们的工作是什么呢?什么程度才算快,是否可以衡量?看,头疼的问题又来了.1.1.1 从一个真实病例说起 下面是本人的真实经历,也许很
ORACLE数据库性能优化
实际上,为了保证ORACLE数据库运行在最佳的性能状态下,在http://www.aliyun.com/zixun/aggregation/32730.html">信息系统开发之前就应该考虑数据库的优化策略.优化策略一般包括服务器操作系统参数调整.ORACLE数据库参数调整.网络性能调整.应用程序 SQL语句分析及设计等几个方面,其中应用程序的分析与设计是在信息系统开发之前完成的. 分析评价ORACLE数据库性能主要有数据库吞吐量.数据库用户响应时间两项指标.数据库吞吐量是指单位时间内数据