对于DBA来说,数据库的优化是必不可少的技术,Oracle ACE专家、恩墨学院院长侯圣文认为,优化思路是从前端向后走,越往后越轻松。运维工程师要用十指去思考,而不是简单的用小手指的回车去思考。运维人的能力越强,承担的压力越大。培养中国最顶级的数据库人才。南京OCP培训
第三届Oracle技术嘉年华再度来袭!作为国内顶尖级别的Oracle数据库技术盛会,现场邀请到Jonathan Lewis,Tim Gorman等Oracle数据库领域国际级专家,特别为中国的数据库爱好者带来他们多年的总结与经验分享。另外,来自Linkedin、Salesforce、京东、1号店、百度、360、淘宝、阿里巴巴、支付宝、移动、联通等公司的核心数据库专家、架构师为各位朋友带来国内最新的数据库领域应用及最佳实践分享。南京OCP培训
Oracle ACE专家 恩墨学院院长侯圣文
目前,运维人员谈优化主要是包括两个方面:1、被动优化,出问题了调调硬件、备份、存储等等。DBA在这样的企业通常是被动优化,自己的价值体现仅仅是20%。2、主动优化,最根本的是从前端设计走,前端的设计就要做到优化。做设计最重要的是存其优点,去其糟粕。在设计之初应该更多的关系存储对象以及CPU的使用情况。南京OCP培训
开发人员解决Oracle代码规范的经验
管理外包开发人员通常会遇到问题,开发人员往往有些人对Oracle并不是很熟悉,他们编写的代码会有milestone,过代表的人往往不是开发人员,而是优化人员或者开发经理。而这些开发人员通常没有受到更好的培训,他们写的代表通常并不规范。因此,侯圣文认为,这些编码人员在编写代码前的一周应该接受培训。
企业如果采用培训之后,强压开发人员的方式往往达不到效果,通过一定的制度,制定一方面的规范,让开发者们可以按照规范来,开发者通常会遇到个方面的阻力难以采用标准方法,继续自己原来的路子。
最后的方法是根据培训做一套校验代码,违反定制规范的代码全部标红,然后以邮件的方式抄送给开发人员的项目主管,然后密送给该开发人员。最后开发组长会约谈开发人员。这种机制建立之后,开发人员会积极主动的改代码,而不是被动的改代码。南京Oracle认证培训
谈及具体的实践经验主要包括以下方面:
充分使用CPU资源:
1、使用并行特性完成CTAS;2、使用并行特性完成索引创建;3、有效的应用程序设计:制定SQL编写规范、限制动态SQL。
另外,不要被官方的操作文档所蒙蔽。
SQL语句的执行计划必须清晰,开发人员没有读过执行计划既可笑又现实。
应用程序SQL代码优化调整包括:
1、SQL执行计划;2、使用索引技术;3、使用反向索引降低索引块争用;4、使用函数索引提高复杂计算效率;5、索引重建,减少碎片;6、保证数据的批量提交;7、使用Hint调整执行计划——OLAP。
数据库设计优化实践:
OLTP数据库;密集型事务,以短事务以及小的查询为主;采用Cache技术、B-tree索引技术与绑定变量;OLAP数据库;长事务、大查询;采用分区技术、并行技术与适当考虑使用位图索引;分开设计与优化;针对OLTP和OLAP两种截然不同种类的系统分别优化。南京OCP培训
内存使用率优化实践
Oracle内存分配策略实践;OLTP;预留:20、SGA:64、PGA:16;OLAP;预留:20、SGA:40、PGA:40;内存自动化管理策略;基于成本的优化器CBO;定期对数据库进行数据统计分析。
数据访问优化实践
本地管理的表空间:字典管理的表空间劣势、自动跟踪表空间里的空闲块、可管理区大小,减少碎片、位图管理方式减少了回滚段信息生成。
增加Oracle块大小:OLAP——数据块增加一倍 → 读写性能改进50%
数据加载操作优化实践
SQL*Loader Direct Path:创建格式化的数据块,直接写入、避免了数据库内核的I/O、远高于Conventional Path模式。
使用外部表完成大量数据移迁移:实现查询数据库以外文件中的数据、方便卸载和迁移。
物理存储优化调整实践
SAME原则(Stripe And Mirror Everything):条带化以便增加吞吐量、镜像提供在磁盘的容错能力;使用裸设备:消除文件系统的系统开销,20%性能提升;使用ASM(自动存储管理);规划归档日志所需磁盘空间
网络流量优化调整实践
使用物化视图复制数据:借助物化视图日志减少跨库更新的网络流量;使用远程过程调用:由本地应用程序调用的远程存储过程、可减少客户端与服务器端的网络通讯量;数据分治处理实践;使用分区技术:改善查询性能、改进数据库的可用性;分区设置nologging减少大型事务的影响;exchange partition提高系统可用性;使用临时表技术:用于改进复杂事物的处理速度;权衡性能优点和空间成本。南京Oracle认证培训
数据库吞吐量提升实践
尽量保证在内存中完成数据库操作;利用磁盘缓存进一步提升吞吐量;分散磁盘I/O;使用比较大的数据库Block Size;控制临时表空间的使用;提升系统CPU性能。