课程简介
在当今信息化时代,数据已成为企业最重要的资产之一,而数据库作为数据存储和管理的核心,其性能直接关系到企业业务的运行效率和客户体验。Oracle数据库,作为全球领先的关系型数据库管理系统,以其卓越的性能、可靠性和可扩展性,赢得了众多企业的青睐。然而,随着数据量的不断增长和业务需求的日益复杂,Oracle数据库的性能优化成为了一个不可忽视的挑战。
本课程旨在全面深入地讲解数据库应用调优的各个方面,帮助学员掌握数据库性能优化的核心技术和实用工具,以应对复杂多变的应用场景。通过系统的理论讲解和丰富的案例分析,学员将能够理解和实施数据库优化策略,提升系统的整体性能和稳定性。
课程收益
1、帮助学员深入了解数据库优化的基本思路、原则及误区;
2、帮助学员学会如何利用操作系统工具和Oracle提供的多种性能优化工具对数据库性能进行精准诊断;
3、帮助学员深入理解内存与I/O优化策略;
4、帮助学员了解Oracle的存储层次结构,掌握数据段、区、块的存储设置对数据访问性能的影响
受众人群
数据库管理人员,最好有1年以上的数据库管理或者开发经验
课程周期
3-4天(18-24H)
课程大纲
标题 | 授课内容 |
一、数据库应用调优概述(3H) | 1. 数据库优化的基本思路和一些误区 2. 数据库优化遵循的基本原则 3. 了解整个系统构建过程中各部分对性能的影响以及有哪些可以优化的部分,尤其对架构设计、ERP模型设计及开发中的一些性能要点进行了详细说明 4. 优化的三个阶段以及各阶段的步骤和方法 5. 确定合理的优化目标 6. 不同类型应用优化的方向和方法,根据应用需求确定优化方向 |
二、性能诊断数据 优化工具(6H) | 1. 如何利用操作系统工具对数据库性能进行分析诊断 2. 性能优化的七种武器,通过各种案例学习如何通过Oracle提供给我们的工具发现、分析、解决性能问题: (1) 最根本的性能信息工具——数据库数据字典和动态性能视图,如何利用查询到得信息进行问题诊断分析,了解v$表和x$表 (2) 诊断性能问题的好帮手:Statspack与AWR/ADDM,提供性能信息收集与性能差异报告,通过结合客户的性能差异报告掌握如何进行性能问题分析与诊断 (3) 快速定位性能问题的好东西:ASH与 ADDR,快速定位与基线对比 (4) 制胜之法宝:以案例的方式帮助我们掌握如何通过等待事件进行性能分析,了解系统中最常见的等待事件的含义和分析方法 (5) 基于自动化收集的性能指导工具包:自动内存优化指导、段指导等 (6) SQL优化的常规武器:SQL Trace与10046事件,掌握如何利用这两种工具快速确定造成性能问题的主要SQL和原因,进而确定优化方法 (7) SQL优化工具包:高手可以通过autotrace获取SQL语句的执行计划和统计信息,分析SQL性能;普通人员也可以通过SQL Tuning Advise和SQL Access Advice获得SQL优化建议 3. 除了上述工具外,另外还有一些其他工具也在不同方向上为我们的性能优化提供着方便快捷的帮助,对于这些“小”工具,也要了解它。 |
三、内存优化(3H) | 1. SGA的内存调整: (1) SGA内存管理的变化——动态管理 VS 自动管理 (2) 32位操作系统的内存管理问题 2. 数据高速缓存区的优化: (1) 数据缓存区的内部运行原理 (2) 数据高速缓存区的性能诊断工具 (3) 数据高速缓存区的性能诊断指标——命中率与等待 (4) 数据高速缓存区的性能优化方法——大小、多池与cache表 3. 共享池的优化 (1) 库高速缓存性能诊断工具 (2) 库高速缓存性能诊断指标——命中率与重载率 (3) 库高速缓存性能优化方法——调整语句代码、共享池大小、绑定变量 (4) 字典高速缓存的性能指标和判断依据 4. Log buffer的优化 (1) 重做日志缓冲区的优化考虑 (2) 重做日志缓冲区的优化指标和方法 |
四、I/O优化与竞争优化(3H) | 1. 数据库I/O优化 (1) 数据库数据文件、重做日志文件、归档文件的I/O性能特点分析 (2) 数据库I/O优化原则 (3) Oracle提供的存储级I/O优化方法——ASM (4) 使用多DBWR进程增加I/O能力 (5) 如何分析数据文件上I/O以确定性能问题的根本原因 (6) LGWR与日志文件的性能问题 (7) 加速归档的方法。 2. 竞争优化 (1) 锁存器(LATCH)竞争优化 ① 锁存器的主要功能和工作原理 ② 如何判断和解除锁存器竞争 (2) 锁竞争的解决 ① 数据库的锁机制原理 ② 锁的分类和各种模式 ③ 锁竞争的诊断和优化 (3) 回滚段竞争优化 ① 回滚段的主要作用和工作原理 ② Oracle的自动撤销段管理方式 ③ 如何判断回滚段竞争以及如何解决回滚段竞争 ④ 对回滚段使用中Ora-01555故障的分析与处理 |
五、应用存储的优化(3H) | 1. 了解Oracle的存储层次结构 2. 分析数据段、区、块的存储设置对数据访问的性能影响 3. 了解各种段类型与性能的关系,选择合适的段存储数据 4. 对比分析DMT与LMT的性能优缺点 5. 掌握HWM的含义和对性能的影响 6. 找出存储结构不合理的表和索引,将这些对象重组,从而得到更好的访问性能 7. 选择合适的块大小,并考虑多种多块大小对性能的影响 8. 设置合理的块空间参数,以减少I/O数量并且合理的存储数据 9. 注意行链与行迁移对性能的影响,解决行迁移 10. 从性能的角度分析如何用好你的表: (1) 怎么选择表:从作用上分析如何选择永久表和临时表;从数据访问需求上,根据分区表、索引组织表、聚簇表或者普通表对性能的影响,选择合理的数据存储方法;从数据特征上考虑字段类型选择;从竞争和I/O需求上考虑表的存储参数和属性设置 (2) 怎么管理表:松散表的判断方法,解决松散表的move与shrink的执行效率和性能影响 |
六、SQL优化深入之算法优化(6H) | 1. CBO和RBO介绍: (1) 优化模式对SQL语句执行计划的影响 (2) 通过参数或者hint选择适合的优化模式以便得到正确的执行计划 2. 优化SQL语句的相关工具(大量案例演示): (1) 了解SQL语句的优化思路 (2) 通过工具确定高负载的SQL,收集SQL语句的统计信息和执行计划 (3) 如何分析执行计划,查看执行计划的关键点 (4) 通过各种案例演示工具对SQL优化分析的帮助,下面是主要工具: ① 使用Explain Plan分析执行计划 ② 通过Autotrace分析故障语句的执行计划和统计信息 ③ 通过SQL Trace查找有性能问题的SQL语句 ④ 通过10g的SQL Tunning Advise自动分析语句性能 ⑤ 通过10g的SQL Access Advise自动分析语句算法 3. 数据访问方法(大量案例演示): (1) 介绍执行计划中的数据访问方法以及各自的优缺点 (2) 分析索引加速查询的原理,确定索引与全表扫描到底如何选择 (3) 确定哪些因素影响索引访问的性能 (4) 索引适合建立在哪些字段上 (5) B*tree索引与位图索引的选择 (6) 函数索引与反转函数对性能的帮助 (7) 确定FTS算法使用的场景,以及如何优化FTS (8) DML操作对索引的影响,以及如何设置索引的存储参数和属性 (9) 索引无效的原因以及如何书写语句以便选择正确的执行计划 (10) 如何通过索引加快COUNT (11) 索引有序度与松散索引对索引性能的影响 (12) 对比Hash Join、Nest Loop、Sort Merge这三种夺表连接算法的优劣 (13) 物化视图对性能的影响,以及适用的场景 4. 收集统计信息 (1) 通过Analyze或者DBMS_STATS方法收集统计信息 (2) 理解各种统计信息对性能有何种影响 (3) 直方图与索引选择的关系 (4) CBO下索引选择性对执行计划的影响 5. SQL语句优化经验 (1) 结合实际经验总结高效的SQL书写方法和优化经验 6. 强制执行计划 (1) 通过对语句的修改影响RBO下的执行计划 (2) 通过修改参数值影响CBO生成的执行计划 (3) 通过Hints直接强制执行计划 |
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员