热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

IBM小机+ORACLE数据库迅猛提升事物数TPS的方法总结

IBM小机+ORACLE数据库迅猛提升事物数TPS的方法总结:近期一直在搞业务压测,提升系统的事务处理能力。事务处理量从刚开始的三千到如今的接近一万,也积累了一些

IBM小机+ORACLE数据库迅猛提升事物数TPS的方法总结:近期一直在搞业务压测,提升系统的事务处理能力。事务处理量从刚开始的三千到如今的接近一万,也积累了一些

IBM小机+ORACLE数据库迅猛提升事物数TPS的方法总结:近期一直在搞业务压测,提升系统的事务处理能力。事务处理量从刚开始的三千到如今的接近一万,也积累了一些优化方法,分享给各位。首先当然需要你的系统是处理大并发事务的,如果你的系统每秒TPS才一两百,香港服务器,可能事务优化并不是主要的目的。这里一共包含两个部分的优化手段,第一部分是常规的优化手段,第二部分是稍微“邪门”点的优化手段。

大并发事务常规的优化手段:

1)REDO LOG 盘优化:如果是放在存储,可以多拿出几块盘来做LOG 盘,最基本的常识盘要做成RAID 10,不能放RAID 5。根据你盘的情况,可以用6-12块盘不等。这些 盘专门提供给REDO LOG用,剩余的空间也不能提供给其他盘用,以免影响LOG 盘的IO。由于存储一般都带有CACHE,CACHE的大小根据高低中端的不同,网站空间,存储型号的不同而不同,存储的CACHE可以说是存储的灵魂,对于写缓冲的效果非常明显,极大的降低写LOG盘的时间。

2)数据盘的IO要根据你系统的情况来,根据操作系统工具topas -D或iostat -DlRa 1 来看数据盘存不存在瓶颈,如果busy比较大,那么需要继续添加硬盘来提升IOPS。事务型的交易系统数据盘的繁忙主要是写脏数据造成的(可能你的情况跟我不一样),一般对IOPS要求不高。这个要根据系统情况来定。IOPS不够,可以考虑用SSD来提升IOPS,但是存储对SSD的支持不太好,最好让SSD的IO可以打散在存储的多个光纤环路中。

3)ORACLE 的GROUP COMMIT是自动、默认的行为,这块其实不用作优化也没法做优化。

4)对关键业务表设置了CACHE属性,保证事务的数据都在内存里。这一块的优化也非常重要,优化效果也非常明显。ORACLE里可以设置CACHE表。

当时压测是基于P740的一个小机+V7000的一个中端存储,做完以上优化,TPS可以达到6000。

非常规手段的优化:

1)由于P740只有物理16core cpu,CPU使用率到了65%,LOAD 接近40。为了LGWR可以任意时刻获取CUP资源,设置了_high_priority_processes 参数,网站空间,保证LGWR可以随时获得CPU资源,不用排队。

2)操作系统级别设置dscrctl -n -b -s 1 内存预读,效果非常明显,立即可以提升1000+的TPS

3)如果你是万兆网卡,chdev -l hba0 -a cdli_queues=4 -P,加大网卡处理队列,效果也非常明显,可以提升1500+的TPS。事物数超大的系统,网卡往往是瓶颈,优化非常必要。及时你的3个千M网卡处理量还完全没到瓶颈,可是使用万兆网卡做了这个优化,还是非常的能看到立竿见影的下效果。

4)ORACLE的REDO LOG 块大小设置为4K.11GR2的版本可以指定REDO LOG的块大小,一般是磁盘的扇区大小512字节。在我的版本11.2.0.3下修改会报错,说修改值与实际扇区大小不匹配。通过修改隐含参数_disk_sector_size_override为true,可以强制改成功。修改的办法是在alter database add log file xxxx blocksize 4096。如果拿PL/SQL压测,采取commit write immediate wait方式提交,优化前后的差距接近4倍,非常惊人。但是拿我们的业务压测,只是提升了1500+的TPS,也非常的不错了。

经过上面4步的优化,TPS可以接近1W了。在此分享,希望对大家有帮助,很多地方说的不详细,有需要,可以联系我,进一步探讨。

P740,16core 3.55GHZ的内存,32G CPU,3块千M网卡BOND。

V7000 80G 的CACHE。12块LOG 盘。足够多的数据盘。

本文出自 “魏兴华的DBA生活” 博客,请务必保留此出处

推荐阅读
  • 本文详细介绍了Linux操作系统中的cp和scp命令,包括它们的基本使用方法、常见选项以及如何通过scp命令安全地在不同主机之间传输文件。 ... [详细]
  • VMware Horizon View 5.0桌面虚拟化部署实践与心得
    在近期的研究中,我花费了大约两天时间成功部署了桌面虚拟化环境,并在此过程中积累了一些宝贵的经验。本文将分享这些经验和部署细节,希望能对同样关注桌面虚拟化的同行有所帮助。 ... [详细]
  • 探讨在构建类似Viber或WhatsApp的聊天应用时,如何有效实现客户端(Web、Android、iOS)与服务器之间的连接。本文将分析使用WebSockets标准及其替代方案的优劣。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
  • 本文深入探讨网页游戏的开发流程,涵盖从程序框架设计到具体实现的技术细节,旨在为开发者提供全面的指导。 ... [详细]
  • GBase 8s SQL 指南:多列约束详解
    本文档详细介绍了如何在GBase 8s中使用多列约束格式,将其应用于现有表的一列或多列。这种格式类似于CREATE TABLE语句中的多列约束,但提供了一些额外的选项,如INDEX DISABLED关键字。 ... [详细]
  • 虽然SQL因其直观易学的语法受到广泛欢迎,但转向Pandas进行数据处理时,初学者可能会感到不适应。本文旨在通过一系列实例,展示如何在Pandas中实现类似SQL的数据查询功能。 ... [详细]
  • 本文探讨了如何利用 Hibernate 进行高效的批量更新和删除操作,包括直接使用 Hibernate API 的方法及其局限性,以及如何通过 JDBC 或存储过程实现更优的性能。 ... [详细]
  • 本文总结了MySQL的一些实用技巧,包括查询版本、修改字段属性、添加自动增长字段、备份与恢复数据库等操作,并提供了一些常见的SQL语句示例。 ... [详细]
  • 作为一名Java Web开发新手,我在尝试将项目部署至Tomcat服务器并连接MySQL数据库时遇到了驱动加载失败的问题。经过一番排查和努力,最终找到了解决方案。 ... [详细]
  • 本文详细探讨了C++中闭包的概念及其实现方式,包括通过重载operator()、使用lambda表达式以及std::bind等方法,旨在帮助开发者更好地理解和运用闭包。 ... [详细]
  • 在Kubernetes集群中部署Kuboard
    本文详细介绍了如何在Kubernetes(简称k8s)环境中部署Kuboard,包括必要的命令和步骤,帮助用户顺利完成安装。 ... [详细]
  • 本文介绍了两种获取和研究 .NET Framework 源代码的有效途径:一是通过官方提供的下载链接获取完整源代码,并使用 Visual Studio 进行本地查看;二是利用在线资源平台,直接在网页上浏览源代码。 ... [详细]
  • 本文介绍并分享了三个个人开源项目,涵盖单元测试中HttpContext的可测试性增强、Visual Studio插件开发以及单元测试报告自动生成工具。 ... [详细]
  • 本文详细探讨了C++中赋值运算符重载函数(operator=)的使用方法和注意事项,结合实例分析了其参数、返回值、调用时机等关键点,并讨论了浅拷贝和深拷贝的区别及其重要性。 ... [详细]
author-avatar
手机用户2502853201
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有