找瓶颈(性能指标的判断) 分析原因
选择解决方案(调优)
对知识面和知识体系的理解要广和深 数据库优化: 内存调优 I/O调优 竞争调优 应用调优:
应用语句调优 SQL调优
SQL书写调优 SQL算法调优
所有通过dual表做的查询,每次都是硬解析 应用存储对象调优 索引等 一. 优化思路
优化怎么做:调资源
把会带来竞争的操作从时间和地点上分散 竞争意味着得到的快,得不到的就慢 例如:
从时间上:备份放晚上做(消耗I/O,减少竞争) 从地点上:在前台消耗客户端的CPU,在后台消耗服务器的CPU
越早越好
充分合理的利用资源
让每个动作只去使用自己应用的CPU
从数据库到算法,各个层面的设计达到最好 调什么:
基于数据库的整个应用系统 架构
前台应用 数据库
应用数据库的网络 数据库的操作系统 磁盘
谁调优:参与项目的各阶段的所有人 需求分析人员 设计人员 开发人员 存储管理员 网络管理员
数据库管理员(关键)
大部分性能问题集中在与数据库的交互上
系统管理员
需要各级人员之间的交互沟通 调优的类型:
设计期的调优 正式运行之前
预定义调优(假想式调优) 直到压力测试通过结束 周期性调优(主动式调优)
数据量和并发访问量达到一定程度的时候开始 周期性
根据周期性的收集数据,判断指标是否衰落来调优 被动式调优:
运行过程中出现了问题(如客户提出语句执行慢了) 什么样的系统需要调优:
有数据有人用的系统(生产系统) 很少有人用的一般不需要调优 调优到什么地步结束:
调优是寻找平衡的过程(可能会影响其他动作) 把长处发挥出来同时不让短处变明显 达到性能指标就结束 调优的阶段:
应用设计和开发 功能模块的设计 应用算法
功能模块的划分
做大量逻辑判断的放前台
处理大量数据的部分放后台做 E-R模型的设计
拆分(第三范式)
适当的冗余对性能有好处(性别,政治面貌等) 冗余大考虑拆分
经常在一起访问的不拆,不经常一起访问的可以拆 冗余大又经常一起访问的,根据冗余的唯一值个数拆分(少则拆)
拆多了消耗CPU(外键校验),拆少了冗余多 表设计:
如CHAR与VARCHAR2: 看字段的长度差别有多大 应用开发: 代码规范
书写规则(大小写,回车换行)
有助于写出相同的语句(数据库只做一次解析) 辅助开发人员写好语句 帮开发人员制定数据规范
LIKE查询的首字母确定会走索引,不确定不走索引 数据的大小写,排放顺序 从开发人员了解情况:
查询多还是数据操作多 表的重要性 并发数据多少 。。。
数据库配置
配置参数(instence) 表空间划分(database) 部署应用
创建对象(表,索引等)
选择对象类型和相关参数 测试:
功能测试,性能测试,压力测试 周期性调整 低效时调整
应用调优>设计调优>数据库调优>系统调优>其他 应用与数据库:需供关系
数据库与操作系统:需供关系 调优的常见问题:
糟糕的会话管理(通常跟中间件有关)
糟糕的游标管理(通常是开发人员的错误导致) OPEN忘CLOSE
糟糕的关系设计(通常是没有遵守好规范/或过度遵循规范) 糟糕的应用算法设计(通常与功能模块设计)
糟糕的数据库架构设计(通常与DBA部署数据库有关) 典型安装不调参数 糟糕的语句算法设计
OracleDBA+性能优化8日游笔记——第五天(二) 2010-01-06 15:57
调优阶段2: 调优设计
设计人员和开发人员 调优应用
DBA和开发人员 调优内存 调优I/O 调优竞争
调优操作系统 数据库调优:
Instance:内存,进程(DBWR,LGWR等) Database
最基本原则:
如果某部分不是瓶颈,就不要尝试优化
优化可能会过头,注意协调整个系统的性能
优化时为系统提供足够的资源并且充分合理的使用资源,而不是无节制的扩充资源
优化有时候也意味着合理的分配或者划分任务 性能优化的基本步骤:
1.设立合理的性能优化目标(确立目标) 减少或消除等待
访问最少块数(减少数据访问量) 写好语句 选好算法
把需要的数据放入最少的块中 将数据保留在内存中(I/O减少) 相应时间 吞吐量
单位时间内的数据处理能力 负载量
并发访问量 恢复时间
2.测量记录当前性能(收集信息) 数据库的信息
Statspack报告 统计信息 等待信息 操作系统的信息 IO,内存,CPU 应用级信息
3.确定数据库的瓶颈(等待什么) 平衡性能与数据库的健壮性的需求 影响性能的因素: Raid方式
Raid-5对写操作影响比较大
Raid-1浪费空间单对写操作影响小 复用控制文件
复用重做日志文件 频繁的执行检查点
看系统忙不忙决定 备份数据文件
从频度上减少影响 执行归档
如数据不重要,写操作多,不用归档 异地容灾等 4.确定OS的瓶颈
5.分析瓶颈原因 6.优化所需部分
7.跟踪并实施更改过程 记录实施之前的状态
逐个实施调优方法而不是同时实施大量方法 实施完了,运行已段时间后重新收集统计信息 8.测量并记录当前性能
9.重复3-7,直到满足优化目标 信息收集工具: 操作系统:
CPU:Top(当前时刻)/sar(历史值)等 RAM:vmstat IO:iostat
数据库:(从上到下最新顺序) 动态性能视图 累计值 顺时值
Utlbstal.Sql/ Utlestal.Sql 一段时间内的值 Statspack(9i)
需要安装,不需要了卸载而不是删除
Statspack本质是一个用户和其下的一堆对象 一段时间内的多点信息 图形化
按“最“方式排序
10以后,可以生成STS(造成高负载的语句的结果集) AWR(自动负载仓库)/ADDM(自动数据库诊断监控) 自动收集
收集主机信息
AWR自动调ADDM产生分析报告, AWR 用MMON进程进行收集,
默认每小时收集一次(快照),保留7到8天 存在sysaux表空间,被sysman用户拥有 ADDM发现问题
用OEM在自动工作量资料档案库中修改 收集级别:
BASIC(收集最少) TYPICAL(常用) ALL(收集最多)
BEGIN和END报告中间不能跨越重启 在指导中心能查看ADDM和其他指导 自动的东西可以参照,但不要完全相信 等待事件
如果不用参数就能描述竞争位置就不要参数,否则要参数
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库OracleDBA性能优化8日游笔记(7)在线全文阅读。
相关推荐: