Oracle开发优化基础.pptx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle开发优化基础.pptx

Oracle开发优化基础 v1.0_cn 由PD团队于2016年制作;数据库开发员需要注意些什么? 如何快速定位及认知性能问题点 如何编写高性能SQL – 基础知识 如何编写高性能SQL – PLSQL优化Tips;数据库开发员需要注意些什么? 一般现状 自身问题 缺乏经验:年轻的开发员缺乏数据库基础知识和优化经验 偏重实现:项目时间紧张,更注重应用功能实现,少关注数据库性能 应用问题 黑盒使用:数据库像个黑盒子,开发需要访问通用API且其框架机制复杂隐蔽 模块设计:逻辑设计阶段还未想透, SQL实现在还未模块化,就先上马运行;数据库开发员需要注意些什么? 不过也请牢记:在尝试使用此优化前确保你的业务逻辑正确,在正确的前提下保证优化的性能 在尝试开发或优化时,确保你了解你正在使用的数据库 何种架构?(是RAC还是单实例?) 举例:sequence order问题 为了避免由于sequence争用而造成锁等待,一般会sequence默认为cache 20 noorder,这可以看作是Oracle的一种默认优化,但是对于RAC下,就会存在无序问题 ;数据库开发员需要注意些什么? 哪个版本? 举例:不同Oracle数据库版本,默认排序不同 当数据需要排序时,你的语句中没有用到ORDER BY,你把它看作是一种优化,顺手为之,但是会有问题;数据库开发员需要注意些什么? 在尝试开发或优化时,确保你了解你所使用的Oracle内部函数 好用 ≠ 可用,不要给自己和DBA造成不必要的麻烦 举例:TABLE函数造成的性能问题 Tivoli监控发现某数据库主机的CPU利用率比较高。经过查看发现, sql_id为ds7vkxa14xt70的SQL语句每次执行消耗超过30亿次逻辑读。且由于多个session同时执行相同语句,访问相同数据,引起相互资源争用。;数据库开发员需要注意些什么? 学习优化技术需与时俱进,不能总以老经验看待新事物 举例:关于EXISTS使用问题 使用EXISTS替代IN? 使用NOT EXISTS替代NOT IN? 使用表连接替代EXISTS? ;数据库开发员需要注意些什么? 如何做到性能下降较少的DB应用开发 懂得从DB角度来看潜在的应用问题 了解并承认DB处理瓶颈 理解Oracle基本操作 避免一些不佳的编码 (如单个SQL运行没问题,但在Oracle整体会有问题) 了解优化器行为,编写Oracle所期望的SQL 了解所用到的数据 除了在分支逻辑中意识到处理不同的业务数据之外,也请对所处理的数据量进行必要的预估处理 ;如何快速定位及认知性能问题点 应用通过DB连接驱动程序(JDBC驱动等),访问数据库,SQL发出后由DB内部处理后返回 ;如何快速定位及认知性能问题点 数据库处理时间 通过下图,了解哪些因素可能会成为瓶颈。可以看到数据库处理时间被细分成三部分: 1)CPU处理时间 2)等待时间【资源等待,同步处理】3)等待时间(磁盘I/O处理);如何快速定位及认知性能问题点 应用变得反应很慢!是因为?(开发员角度) 非SQL原因 需对应用、设置、网络等进行审查 SQL原因 仅一两个SQL需要优化 非常多的SQL需要优化,如多个SQL的单一化SQL修改等 (则需要审查整个应用程序逻辑及设置合理性) ;如何快速定位及认知性能问题点 应用调整 ;如何快速定位及认知性能问题点 如何使数据库处理得更快 有效利用CPU资源 减少等待时间 降低磁盘I/O 降低同步处理所需时间;如何快速定位及认知性能问题点 开发员的SQL问题定位思路 DBA指出的问题SQL及当前正开发测试或正运行的SQL 考虑本质影响因素 是否有效使用CPU 磁盘IO的使用情况 同步处理情况 查看外在表现形式 锁等待情况 表连接和索引使用情况 软硬解析情况 扫描读取情况 分析SQL使用工具命令 set autotrace execute plan(会在介绍执行计划部分讲到) sql_trace ;如何快速定位及认知性能问题点 set autotrace on 和 traceonly 的区别是后者不产生sql的输出结果,一般用后者。 前者不实际执行,只看执行计划;后者不实际执行,只看io 使用autotrace分析sql时最好执行两次,看第2次执行的输出 ;如何快速定位及认知性能问题点 Session级别的sql_trace (1) 获取trace文件所在的路径,以及文件名: 对获取的trace文件使用ktprof进行格式化 关闭SQL_TRACE;如何快速定位及认知性能问题点 Session级别的sql_trace (2) 查询抓取sid, serial# 调用dbms_system.set_sql_trace_in_session (使用完后,记得关闭追踪,sql_t

文档评论(0)

dmz158 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档