Oracle数据库10g性能概述LengTan甲骨文公司主题数据库性能的发展目标基准成功案例10g中的主要增强功能–PL/SQL加速–DSS优化–自动化性能分析与调整发展目标:性能保持Oracle在大型SMP上的性能领先地位高性能的2P和4P系统,以实现RAC扩展支持比以往更大的数据库自动调整性能,使所有客户都能获得高性能第一个达到1MtpmC:SMP和集群RACSuperdome1,184,8931,008,1440250,000500,000750,0001,000,0001,250,000tpmC来源:事务处理大会,2004年1月1日:带有真正应用集群的Oracle数据库10g,4路HP集成rx5670的16个节点,1,184,893tpmC,$5.52/tpmC,2004年4月30日提供。64路HP集成Superdom上的Oracle数据库10g,1,008,144tpmC,$8.33/tpmC,2004年4月14日提供。HP系统上的Oracle$5.52/tpmC$8.33/tpmC16X4路Itanium21X64路Itanium2TPC-C:10g比9i快28%10g9i541,673423,4140100,000200,000300,000400,000500,000600,000tpmC来源:事务处理大会,2004年1月1日:64路HP9000Superdome上的Oracle数据库10g,541,673tpmC,$11.66/tpmC,2004年1月30日提供。64路HP9000Superdome上的Oracle9i数据库第2版,423,414tpmC,$15.64/tpmC,2002年8月26日提供。HP系统上的Oracle$11.66/tpmC$15.64/tpmC在使用PA-RISC芯片的64路Superdome上测试得到的两种结果引人注目的TPC-H结果发布SMP–1TB扩展因子(世界记录)–3TB扩展因子(世界记录)–10TB扩展因子(仅SMP结果)RAC–1TB扩展因子–3TB扩展因子PL/SQL新的PL/SQL优化编译器–更复杂的代码生成器–全局代码优化器–性能得到提高且代码规模变小全面支持本地编译编译时性能警告PL/SQL优于Oracle9i的改善024689iR2Interpreted9iR2Native10gNativeLevel2改善系数PL/SQL优于Oracle8的改善048128.08i9iR2Native10gNativeLevel2改善系数查询优化器自动的优化器统计信息收集–Oracle根据需要自动分析对象,以保持优化器的统计信息为最新状态–管理员不再需要跟踪需要更新统计信息的对象。–高级查询优化自动的调整优化器“CPU+IO”默认成本模型“CPU+IO”优化器成本核算060120180时间秒联合查询重新排序谓词IO模型CPU+IO模型050100150200时间秒select_1select_29iR210g全表扫描select_1:从销售人员中选择*,其中company_id!=2;select_2:从销售人员中选择*,其中amount_sold14965,company_id=2;并行的单游标新的查询执行模型单游标–包含了并行执行所需的全部信息–用于整个并行执行过程好处–过去串行执行的操作现在被并行化,性能得到了提高–由于全局的并行规划,因此降低了共享内存的使用率0100200300400500600700时间秒9iR210g并行的单游标HAVING子句中的关联子查询在Oracle数据库10g中并行执行概要管理物化视图–为更多物化视图提供更多快速刷新机制–增强了PCT刷新,以便使用维度和查询重写–使用功能相关性(在维度与外部键关系中定义)生成更快速的刷新语句查询重写–基于SQL且具有透明性–现在可以使用多个物化视图概要顾问对分区敏感的快速刷新01020304050时间分9iR210g刷新前:•为2003年11月和2003年12月的SALES表添加2个新分区。•在SALES事实表中插入相当于2个月的新数据(约760万行)。使用METHOD=’?’刷新物化视图分区多种分区技巧:–范围、散列、列表、范围-散列组合、范围-列表组合新增:带索引编排表的列表分区–本地和全局索引新增:散列分区的全局索引对拥有大量分区的对象支持得到改善DROPTABLE:大量的分区来自Oracle示例方案的销售表,对time_id进行了范围分区(72个分区),对prod_id进行了散列分区(每个分区包含256个子分区)-72x256=18,432个分区0200400600800时间秒9iR210g分区外部连接0200400600时间秒9iR210gANSIJOIN操作符扩展的新操作•对于需要的维度密化,使用更简单的表达式•允许在表分区内部执行OUTERJOINS本地数据050100150200250300350时间秒9iR2(Oraclenumbers)10g(SQLchange)10g(Schemachange)2种新的存储数据类型•实现了大部分二进制浮点运算的IEEE754标准(包括二进制浮点运算和二进制双精度运算)。ETL:数据泵实用工具高速的“数据泵”导入/导出–替代了原来的导出和导入–新的集成体系结构–带有文档说明的程序包接口–高速的直接路径加载/卸载–以最佳方式随取随用运行–利用并行执行自动伸缩数据泵ExportImport040080012001600时间秒原始的数据泵快35%快15倍ETL:跨平台的可移动表空间允许无限制地跨不同平台移动表空间–直接在各种UNIX、Linux和Windows平台之间转移数据库文件,无需导出数据–以文件传输的速度向Linux(和其它平台)移植智能基础架构应用程序与SQL管理系统资源管理空间管理备份与恢复管理存储管理数据库控制数据库管理Oracle数据库10g—自管理的数据库智能基础架构自动负载信息库自动维护任务基础架构服务器生成的警告基础架构顾问基础架构自动负载信息库–数据库的“数据仓库”–自动维护任务–预先打包、控制资源服务器生成的警告–推模式、及时性顾问基础架构–集成性、统一性自动负载信息库性能信息库–基本统计信息–SQL统计信息–量度–ACTIVESESSIONHISTORY默认情况下工作负载数据每30分钟收集一次,并保留7天自管理其空间需求为已改善的性能诊断工具提供基础诊断监控器(ADDM)数据库的性能诊断引擎–集成所有的组件–预先以手动方式运行–使用来自AWR快照的时间和等待数据自动提供数据库范围的性能诊断–提供根源分析、建议解决方案和接下来的步骤–识别非问题区域SQL顾问高负载SQLIO/CPU问题RAC问题AutomaticDiagnosticEngine自动负载信息库中的快照自诊断引擎系统大小调整建议网络+DB配置建议使用Oracle10g,生活将发生怎样的改变?以前1.查看系统利用率2.查看等待事件3.监视加锁竞争4.查看共享池和库高速缓存锁上的等待5.查看v$sysstat(很难)6.查看“已花费的分析时间”是否大于“分析时间cpu”,以及硬分析数目是否大于正常水平7.SQL识别方式……识别并跟踪存在大量硬性分析的会话,或者查看v$sql,以找到具有相同散列计划的多条语句(很难)8.查看被访问的对象和SQL9.查看SQL是否包含字符串,来识别“硬性分析”问题10.支持游标共享Oracle10g1.查看ADDM建议2.ADDM建议使用cursor_sharing问题:过多的硬性分析导致了性能降低自动调整优化器Oracle10g使SQL调整过程自动化–自动捕获工作负载、识别高负载的SQL–自动SQL调整–自动SQL分析–SQL访问顾问SQL概要打包应用程序+SQL建议定制应用程序+索引和物化视图定制应用程序+调优的SQL高负载的SQL打包应用程序定制应用程序自动的调整优化器自动SQL调整自动SQL分析访问顾问自动调整优化器识别‘低劣’的SQL–自动捕获工作负载–自动识别高负载的SQL–前N条最耗费资源的SQL语句高负载的SQL打包应用程序定制应用程序自动调整优化器自动SQL调整–学习以前的执行过程–动态采样和局部执行技巧–创建SQL语句的概要,反馈给优化器–无需修改SQL文本SQL概要打包应用程序+调优的SQL高负载的SQL打包应用程序定制应用程序自动的调整优化器自动SQL调整自动调整优化器自动SQL分析–优化器解释决策要点–为低劣的SQL、过时的统计信息和低劣的模式提供建议SQL建议定制应用程序+调优的SQL高负载的SQL打包应用程序定制应用程序自动的调整优化器自动的SQL分析自动调整优化器SQL访问顾问–关于访问路径的建议–索引、物化视图、物化视图上的索引–考虑全部工作负载–考虑对插入/更新/删除的影响索引和物化视图可定制的应用程序+调优的SQL高负载的SQL打包应用程序定制应用程序自动的调整优化器访问顾问以前1.查看系统利用率2.查看等待事件3.查看DB分散读取等待4.确定范围(系统范围)与模块相关还是与用户相关?5.SQL识别方式(很难)识别并跟踪存在高DB分散读取等待的会话,或者查看OEM中等待最长时间的会话6.获取解释概要7.查看被访问的对象(大小/基数)8.查看SQL统计信息和/或比较对象统计信息(v$sql)(很难)9.识别“第一行”问题10.联系打包应用程序的供应商11.为供应商创建测试案例12.供应商提供带“first_rows”提示的补丁/升级13.在下一个维护周期中安装补丁/升级Oracle10g1.查看ADDM建议2.按照链接,运行自动SQL调整3.接受来自SQL调整的SQL概要建议问题:打包应用程序中的低劣SQL使用Oracle10g,生活将发生怎样的改变?自调整内存只有2个内存参数顾问帮助设置参数根据工作负载变化自动重新调整大小使可用内存的使用率最高SGA池PGA池大规模批量作业排序Java池SQL缓存大型池缓冲器缓存SQL缓存排序在线用户大型池缓冲器缓存Java池使用Oracle10g,生活将发生怎样的改变?以前1.启动缓冲池顾问2.检查输出;检查缓冲池是否大于分配容量3.如果情况属实,缩小缓冲池4.启动共享池顾问5.检查输出;检查共享池是否低于分配容量6.如果情况属实,增大共享池Oracle10g这一部分特意保留为空白问题:内存不足的错误(ORA-4031)自动检查点调整Oracle自调整检查点,以实现恰当时间的恢复,从而较少地影响正常生产–无需由DBA进行手动调整–无需配置参数下一步……有关详细信息,请访问OracleOTN网站:–––TPC网站–问答问答