4006-998-758
3000+课程任你选择
深度化的数据库学习 从“能运行”到“高性能”
研发学院 深度化的数据库学习 从“能运行”到“高性能”
胡国青

吉林大学计算机系毕业先后加入外企,互联网公司等。从事Oracle、MongoDB、MySQL、Hadoop、Redis等咨询、支持和培训工作。为大量银行/金融、电信行业、互联网、保险等客户提供支持和服务。曾任职惠普、快乐购-芒果TV等公司服务,主要负责DBA和技术架构工作。热衷于Oracle、MySQL、MongoDB、Redis、 Linux、Java、Python、shell等技术。
目前任职多家公司数据库技术顾问;负责SQL优化、DB培训、DB架构设计等相关工作。为几十家大型企业做过数据库培训。
擅长数据库架构、问题诊断和性能调优以及web诊断、大数据管理等。
2014年,考取Oracle OCM
2016年,加入MongoDB核心社区,从事课件书写和技术分享
2018年,研究NewSQL,并应用到线上使用

查看老师详情
课程内容

课程背景

随着业务的不断发展和数据量的持续增长,对数据库的高效执行、优化以及故障诊断能力提出了更高的要求。和数据库管理员需要深入理解 SQL 在这两种数据库中的执行机制,以便能够精准地进行优化,提升数据库的响应速度和处理能力。同时,面对可能出现的各种故障情况,具备快速准确诊断和解决问题的能力,能够最大程度减少对业务的影响

课程介绍

本课程是基于金融行业、企业行业、交通行业等技术实践和业务应用场景,结合当前企业级应用场景进行综合性课程设计。从专业知识,专业技能,通用技能多维度全面培养数据库优化人才的的综合能力。

课程产出

掌握数据库性能优化等方面,并应用到实际项目中;

学员可了解如何根据实际业务创建合适的数据表结构,设计索引分区,并对数据库进行有效的管理和设计,以及针对慢SQL进行定位和调优,使数据库保持高效运行;

数据库高可用架构实践应用。

课程目标

基于金融等行业大规模应用为基础的真实架构案例驱动教学;

大规模数据库架构设计与真实案例实践;

构筑顶级能力维度模型,带你快速成长为数据化转型所需的复合型人才

课程大纲

体系架构和数据库对象管理(第一天)

l  体系架构

n  组件概述

n  负载均衡策略

n  内存管理

n  内存数据落盘策略

n  SQL请求执行流程

n  DML/DDL语言处理

n  OLAP/OLTP数据库概述

n  部署模式介绍

n  技术指标说明

n  应用场景

l  SQL进阶

n  数据字典

n  数据类型

n  函数与操作符

n  子查询

n  核心算子

n  执行计划

n  执行方式

l  数据库设计与管理

l  对象设计与管理

n  创建和管理用户、数据库、schema

n  表管理

n  索引管理

n  视图管理

n  sequence管理

l  存储管理

n  数据存储结构

n  表空间管理

n  分区管理

n  日志管理

l  事务管理    

n  事务介绍

n  事务隔离级别

n  管理并发读写

n  锁管理

n  RC隔离级别和RR隔离级别在业务中使用实践

l  数据库安全管理

n  数据库访问控制

n  数据库用户管理

n  数据库权限管理

n  数据库对象权限

n  数据库安全审计

n  行级访问控制

n  数据脱敏、函数加密、透明加密

l  数据库迁移管理

n  迁移方案介绍

n  工具介绍

n  数据迁移服务

SQL性能瓶颈分析和解决(第一天)

l  理解SQL在数据库下查询的工作原理

n  SQL查询的执行过程

n  数据库引擎解析、执行SQL语句

l  SQL优化本质和优化技术

l  数据访问方式效率的对比:全表扫描与索引扫描

l  多表连接的执行计划、适用场景与优劣势

n  嵌套循环

n  合并连接

n  哈希连接

u  三种表连接案例讲解(从业务场景分析)

l  分析和诊断SQL查询性能

n  SQL调优方法论-执行计划深度分析

n  从案例中辨别低效执行计划

l  优化SQL查询语句

n  选择合适的连接类型

n  避免使用子查询、改用连接Join(那些场景下)

n  避免使用复杂的查询(多表关联性能为什么差)

n  索引技术:应用场景以及对业务数据查询的影响

l  索引类型和工作原理

l  分析索引覆盖

l  避免过度索引

l  定期维护索引

l  SQL性能问题定位以及性能问题来源

n  用户SQL写法 - 遵循开发规约

n  代价模型缺陷 - 执行计划

n  统计信息不准确

n  数据库物理设计:决定查询性能

n  系统负载:影响整体吞吐率,影响单sql rt

n  客户端路由 - 远程执行

l  SQL调优方法

n  针对单条 SQL 执行的性能调优

u  单表访问场景:索引、排序或聚合、分区、并行

u  多表访问场景:连接顺序、连接算法、并行、 查询改写

n  针对吞吐量的性能优化

u  优化慢SQL

u  均衡SQL的请求流量资源

l  如何通过执行计划字段辨识低效的SQL

n  查看各阶段耗时

l  调优基本流程分析步骤

n  通过全局查看SQL 执行信息 ,初步查找SQL请求的流程中导致耗时或消耗资源(如内存、   磁盘IO等)的 SQL

n  单条SQL的执行性能往往与该SQL的执行计划相关,执行计划的分析是最重要的手段。通过执行EXPALIN命令查看优化器针对给定 SQL 生成的逻辑执行计划 ,确定可能的调优方向

n  找到具体的慢SQL,为了使某些 SQL 的执行时间或资源消耗符合预期   , 常见的优化方式如下:

u  对SQL做等价改写生成最佳执行计划

u  针对多表访问的SQL,还需要关注多表间的联接问题 , 通过优化访问路径、联接顺序和联接算法等实现查询优化

u  索引案例实践

优化实践(第一天)

l  实际案例讲解

l  表连接

l  部署服务器需要注意的事项总结

l  最佳实践

n  性能诊断工具: Explian SQL执行计划相关的成本因子

n  Trace信息

n  跨节点分布式查询优化

u  逻辑优化、条件下推、隔离

n  引擎如何优雅处理海量SQL逻辑

n  SQL profiler 工具介绍

l  优化实践

u  数据库优化方法论

u  全链路性能调优实战

u  业务模型优化

u  先整体再局部

u  先解阻塞性问题

u  热点SQL优化

u  慢SQL优化

u  减少数据访问次数(减少磁盘访问)

u  返回更少数据(减少网络传输或磁盘访问)

u  减少交互次数(减少网络传输)

u  减少服务器CPU开销

u  利用更多资源(增加资源)

u  联接顺序

u  索引回表

l  数据表优化

n  核心数据表设计

n  分库分表调优

n  数据均衡设计之初

n  数据表片键设计

n  多表连接查询优化

n  表膨胀优化实践

n  字段类型设计

n  对表逻辑更新

n  添加创建和修改时间列

n  如何查找慢查询:为什么会对业务造成危害

n  优化大表总要性:多大是最优的

n  为什么不要使用大字段类型

n  为什么要限制DML操作的数据大小

l  并发控制和锁的实现方式

n  隔离级别对数据库影响

n  减少锁的竞争,优化事务的粒度

n  乐观锁实现策略(那些场景使用)

 

优化实践,代码实操(第一天)

l  实际案例讲解

l  部署服务器需要注意的事项总结

l  最佳实践

n  性能诊断工具: Explian SQL执行计划相关的成本因子

n  Trace信息

n  引擎如何优雅处理海量SQL逻辑

l  案例优化实践,如何定位SQL性能问题

u  数据库优化方法论

u  全链路性能调优实战

u  业务模型优化

u  先整体再局部

u  先解阻塞性问题

u  热点SQL优化

u  慢SQL优化

u  减少数据访问次数(减少磁盘访问)

u  返回更少数据(减少网络传输或磁盘访问)

u  减少交互次数(减少网络传输)

u  减少服务器CPU开销

u  利用更多资源(增加资源)

u  联接顺序

u  索引回表

l  案例:数据表优化

n  核心数据表设计

n  分库分表调优

n  数据均衡设计之初

n  数据表片键设计

n  多表连接查询优化

n  表膨胀优化实践

n  字段类型设计

n  对表逻辑更新

n  添加创建和修改时间列

n  如何查找慢查询:为什么会对业务造成危害

n  优化大表总要性:多大是最优的

n  为什么不要使用大字段类型

n  为什么要限制DML操作的数据大小

l  案例:分区表管理

l  除了前台关注运行的SQL,还要关注那些内部视图

l  并发控制和锁的实现方式

n  减少锁的竞争,优化事务的粒度

n  乐观锁实现策略(那些场景使用)

l  案例:SQL索引的检查与失效情景解析(字符集-类型转换导致全表扫描)

l  案例:避免长事务

l  案例:分页查询

l  案例:乐观锁-悲观锁

l  案例:全表查询的影响-线程池影响(索引和IN优化)

l  案例:索引覆盖、索引下推、单表大小说明、碎片优化

l  案例:死锁问题分析

l  案例:优化器选错索引

容灾方案设计:高可用架构(第二天)

l  数据库高可用方案选型依据

l  业务连续性技术架构规划

1)       如何规划整体架构建设?灾备需求分析及规则

2)       应用架构规划

① 业务同城双活--数据库单写(多读)

② 业务异地灾备-数据库单写(多读)

③ 业务两地三中心部署-数据库多活(单写,多读)

④ 业务异地多活(单元元改造)(数据库多写多读

l  数据库连续性技术架构规划

1)       节点故障

2)       数据库同城双活架构设计

3)       数据库异地灾备架构设计

4)       数据库两地三中心架构设计

5)       业务单元化

6)       数据库异地多活架构设计

l  备份与恢复

l  多数据中心数据库架构设计

1)       异步

2)       同步

l  业务连续性如何实现
  a) 数据库切换,应用开发注意事项
  b) 如何选择新主库
  c) 切换完成后何时继续提供服务,及对应的应用开发
  注意事项
  d) 如何保证切换期间不会导致业务数据丢失

l  数据一致性保证

数据库业务使用要点 转账代码实操(第二天)

l  数据库应用实践案例

n  需求分析与规划(需求收集/风险评估)

n  测试设计(测试工具/准备数据)

n  初步测试(功能验证/性能初步评估)

n  分析与优化(问题分析/优化方案)

n  再次测试(用户体验)

n  持续监控与维护(性能健康/定期检查)

n  数据库异常诊断(慢查询、并发、锁、阻塞等)

l  测试结合要点

n  表设计(分表依据)

n  锁设计(乐观锁/悲观锁)

n  事物设计(如何控制事物大小)

n  索引设计(最佳设计原则)

n  连接池设计(使用连接池要注意事项)   

n  SQL优化(小表变大表/改写)

n  服务器性能(CPU/IO/内存/NUMA)

n  网络性能

n  参数配置

n  监控

l  关键问题

u  数据库性能分析问题

u  SQL影响:慢查询和慢查询收集工具

u  SQL事务监控

u  SQL阻塞监控

u  CPU抖动:Prometheus+zabbix、Top监控

u  通过慢日志或监控平台获取某一个时刻SQL

n  业务并发访问问题

u  业务压力突增全链路监控

u  界定每个部分是否有问题

u  定位问题所在

n  性能问题:小数据量下性能良好,但在大数据量下性能急剧下降

u  基准测试:在小数据量下进行基准测试,记录性能指标。

u   压力测试:使用工具如 JMeter、LoadRunner 进行压力测试,模拟大数据量和高并发场景。

u  长时间测试:进行长时间的稳定性测试,观察系统在长时间高负载下的表现。

n  并发问题:在单用户或少量用户情况下表现良好,但在多用户并发访问时出现死锁、数据不一致等问题

u  并发测试:使用工具模拟多用户并发访问,观察系统的响应时间和错误率。

u  事务测试:特别关注涉及多个事务的操作,确保事务的隔离性和一致性。

n  数据一致性问题:数据在不同模块之间不一致

u  数据校验:在不同模块之间进行数据校验,确保数据的一致性。

u  日志分析:分析系统日志,查找数据不一致的原因。

u   事务管理:确保事务的正确管理和回滚机制。

u  异常处理问题:异常处理不当,导致系统崩溃或数据丢失。

u  异常测试:模拟各种异常情况,如网络中断、数据库连接失败等。

u  日志记录:确保所有异常都被记录下来,便于后续分析。

u  恢复测试:测试系统的恢复机制,确保系统在异常后能够恢复正常运行。

n  资源泄漏问题:内存泄漏、文件句柄泄漏等。

u  内存分析:使用工具如Valgrind、VisualVM 进行内存分析。

u  文件句柄检查:检查系统中打开的文件句柄数量,确保没有泄漏。

u  性能监控:持续监控系统的资源使用情况,及时发现异常。

n  日志和监控问题:日志记录不完整,监控机制不健全

u  日志审计:定期审计日志文件,确保日志记录的完整性和准确性。

u  监控工具:部署性能监控工具,持续监控系统的运行状态。

u  报警机制:设置合理的报警阈值,及时发现和处理异常。

l  事务处理能力

n  数据可靠性

n  数据分片操作

n  服务高可用

n  水平扩展能力

l  数据库应用实践工程实施方法论和阶段性优化概述


返回上一级