课程简介
随着信息技术的飞速发展,数据库作为信息系统的核心组件,其重要性日益凸显。无论是大型企业级应用、云计算服务、大数据分析,还是移动应用后端,数据库都扮演着数据存储、检索和处理的关键角色。而SQL(Structured Query Language,结构化查询语言)作为数据库管理和操作的标准语言,其掌握程度直接影响到数据处理的效率与质量。
本课程首先深入讲解SQL的书写与使用技巧,接着剖析SQL处理过程对数据库性能的影响,然后概述数据库应用调优思路,涉及海量数据库优化、架构设计、E-R模型及开发性能要点,此外,还介绍了性能优化工具如Statspack、AWR/ADDM、ASH等,助力问题诊断与分析,重点讲解应用SQL优化,包括优化思路、CBO与RBO、执行计划分析、数据访问方法、索引策略及统计信息收集等,结合实战经验分享SQL优化技巧与数据库参数设置。
课程收益
1、帮助学员深入了解SQL的性能误区和使用技巧;
2、帮助学员了解Oracle数据库对SQL语句的处理过程,以及数据操作的性能影响因素;
3、帮助学员掌握掌握数据库调优方法;
4、帮助学员熟练使用优化工具
受众人群
数据库开发人员,最好有一定基础,1年以上的数据库管理或者开发经验
课程周期
3-5天(18-30H)
课程大纲
标题 | 授课内容 |
一、SQL的书写与使用(6H) | 1. 简述SQL的性能误区 2. 讲述一些SQL使用技巧,描述开发人员容易出错或者低效的一些SQL语句写法,通过案例分析是开发人员提高SQL的书写能力。下面的SQL部分重点讲解一些有多年开发经验的开发人员也会忽略的SQL技巧和性能要点。 3. 简述SQL的性能误区 4. 一些SQL使用技巧,错误或者低效的一些SQL语句写法,通过Oracle内部性能优化工具展示不为我们所关注的那些性能隐患 5. 使用集合操作 6. 使用UNION、UNION ALL、INTERSECT、MINUS操作符执行查询结果集合的合并操作 7. GROUP BY 子句的增强 8. 使用ROLLUP、CUBE、GROUPINGSET等操作符增强GROUP BY子句,提供更强的分组计算能力 9. 高级子查询 10. 在子查询的基础上学习多列成对子查询、多列非成对子查询、相关子查询、带有WITH子句子查询的使用等 11. 分析函数的使用 12. 掌握常规分析函数的使用和机制 |
二、SQL的处理过程以及对数据库的影响(3H) | 1. 数据操作的性能影响 2. 了解影响DML操作的性能因素,分析锁竞争、日志等待以及回滚段竞争对DML性能下降的影响,以及其他可能带来DML慢的原因。在讲解过程中也将阐述Redo、Undo的原理以及Undo提供的一致性读、FlashBack功能。 3. 了解Oracle对SQL处理的过程 4. 分析Oracle数据库中SQL语句的处理过程,了解SQL解析、执行、取操作的每个环节对性能的影响,掌握SQL硬解析对性能的影响和优化硬解析的方法,掌握SQL排序的机制和优化排序的方法 |
三、数据库应用调优概述(3H) | 1. 海量数据库优化的思路和一些误区 2. 优化的三个阶段以及各阶段的步骤和方法 3. 了解整个系统构建过程中各部分对性能的影响以及有哪些可以优化的部分,尤其对海量数据库的架构设计、E-R模型设计及开发中的一些性能要点进行了详细说明 4. 大数据量数据库不同类型应用优化的方向和方法,根据应用需求确定优化方向,对大数据访问及高并发访问的应用优化方向进行分析 5. 分库、分表、分区多种不同的数据处理方式分析 6. 优化的基本步骤、方法以及注意事项 |
四、优化工具介绍(3H) | 1. 性能优化的七种武器,通过各种案例学习如何通过Oracle提供给我们的工具发现、分析、解决性能问题: 2. 利用系统信息收集工具对数据库进行性能诊断 3. 如何利用最根本的性能信息工具——数据库数据字典和动态性能视图进行信息收集和诊断 4. 诊断性能问题的帮手:Statspack与AWR/ADDM,提供性能信息收集与性能差异报告,通过结合客户的性能差异报告掌握如何进行性能问题分析与诊断 5. 快速定位性能问题的好工具:ASH / ADDR,快速定位与基线对比 6. 制胜之法宝:以案例的方式帮助我们掌握如何通过等待事件进行性能分析,了解系统中最常见的等待事件的含义和分析方法 7. 基于10g自动化收集的性能指导工具介绍——自动内存优化指导、自动SQL优化指导、自动回滚段指导、段指导等 |
五、存储优化(3H) | 1. 应用存储参数的优化 (1) 了解Oracle的存储层次结构 (2) 分析数据库段、区、块的存储设置对于数据库的数据访问的性能影响 (3) 掌握HWM的含义和对性能的影响 (4) 找出存储不合理的表和索引,将这些对象重组,从而得到更好的访问性能 (5) 设置合理的块空间参数,以减少I/O数量并且合理的存储数据 (6) 注意行链与行迁移对性能的影响,解决行迁移 2. 从性能的角度分析如何用好你的表: (1) 怎么选择表 ① 从作用上分析如何选择永久表和临时表 ② 从数据访问需求上,根据分区表、索引组织表、聚簇表或者普通表对性能的影响,选择合理的数据存储方法 ③ 分区表的分区类型选择与分区索引选择 ④ 从数据特征上考虑字段类型选择 ⑤ 从竞争和I/O需求上考虑表的存储参数和属性设置 (2) 怎么管理表 ① 松散表的判断方法,解决松散表的move与shrink的执行效率和影响 |
六、应用SQL优化 (12H) | 1. SQL语句的处理过程 (1) 了解SQL语句的优化思路和优化重点 2. CBO和RBO介绍 (1) 了解决定SQL语句执行计划生成方法的优化模式,并选择适合的优化模式以便得到正确的执行计划,对比CBO、RBO各自适合的场景 3. 优化SQL语句的相关工具(重点介绍11G相关工具) :了解数据库SQL语句的优化方法,通过相关工具定位具有高影响力的SQL,收集SQL语句的统计信息和执行计划,分析执行计划的正确性,对比统计信息,选择最佳执行计划。涉及到的SQL优化工具包括: (1) 提供SQL优化集的Statspack与AWR (2) 使用Explain plan分析执行计划 (3) 通过Autotrace分析故障语句的执行计划和统计信息 (4) 通过SQL Trace查找有性能问题的SQL语句 (5) 通过10g的SQL Tunning Advise自动分析语句性能 (6) 通过10g的SQL Access Advise自动分析语句算法 4. 数据访问方法(大量案例演示): (1) 介绍执行计划中的数据访问方法以及各自的优缺点 (2) 分析索引加速查询的原理,确定索引与全表扫描到底如何选择 (3) 确定哪些因素影响索引访问的性能 (4) 索引适合建立在哪些字段上 (5) B*tree索引与位图索引的选择 (6) DML操作对索引的影响,以及如何设置索引的存储参数和属性 (7) 索引无效的原因以及如何书写语句以便选择正确的执行计划 (8) 如何通过索引加快COUNT (9) 对比Hash Join、Nest Loop、Sort Merge这三种夺表连接算法的优劣 (10) 对物化视图进行分析,确定这种最快的数据访问方法的特点和使用场景,并通过案例说明这些数据访问方法对性能的影响 5. 收集统计信息 (1) 通过Analyze或者DBMS_STATS方法收集统计信息 (2) 理解各种统计信息对性能有何种影响 (3) 分析绑定变量与统计信息的关系,确定使用绑定变量优化解析最适合的场景 6. 应用或者强制执行计划 (1) 通过对语句的修改影响RBO下的执行计划,通过修改参数值影响CBO生成的执行计划,通过hints直接强制执行计划 7. SQL语句优化经验 (1) 将实际经验中总结出的SQL使用方法和经验进行讲解,让大家了解什么样的SQL语句是比较好的语句,以及如何判断语句性能的问题 8. 数据库常用参数作用介绍及常见场景参考值推荐 |
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员
Mace Liu
百林哲咨询(北京)有限公司专家团队成员