课程简介
本课程是基于金融行业技术实践和业务应用场景,结合当前企业级应用场景进行综合性课程设计。从专业知识,专业技能,通用技能多维度全面培养数据库优化人才的的综合能力。
目标收益
掌握该数据库性能优化等方面,并应用到实际项目中;
掌握如何从MySQL迁移到TDSQL、以及Oracle迁移GaussDB,实践出真知;
学员可了解如何根据实际业务创建合适的数据表结构,设计索引分区,并对数据库进行有效的管理和设计,以及针对慢SQL进行定位和调优,使数据库保持高效运行以及安全稳定运行。
培训对象
研发人员 数据库工程师等
课程大纲
| TDSQL、GaussDB、GaussDWS 架构特性对比、适用场景、特性驱动的优化实践、选型与迁移注意事项 |
· 架构与产品定位对比:三者的分布式架构、HTAP能力与各自适用场景(交易库/分析库/一体化) 事务处理、隔离级别 索引与访问路径原理:B+树/哈希索引结构、覆盖索引、最左前缀与索引下推,索引失效的典型场景与识别方法。 索引碎片导致执行计划问题分析和解决 表设计以及主键设计原则 锁机制 · 关键能力特性:分布式事务、并行查询、向量化执行、行列混存、弹性扩缩容等特性的原理与收益。 · 特性驱动的优化实践:依据产品特性设计表结构、分布键与索引,让查询贴合引擎优势。 · 选型与迁移注意事项:兼容性差异、改造成本评估、灰度上线与回退方案。 · 金融案例锚点:GaussDWS承载分析型报表、TDSQL承载交易库:如何让特性在两类负载上充分发挥。 · 实操与互动:针对一张高并发交易表完成分布键选择与数据倾斜治理练习。 · SQL优化本质和优化技术 数据访问方式效率的对比:全表扫描与索引扫描 多表连接的执行计划、适用场景与优劣势 (1)嵌套循环 (2)合并连接 (3)哈希连接 SQL调优方法论-执行计划深度分析 · 影响性能的因素(架构、数据特性、业务需求等) · GaussDB Ustore存储引擎解读 · 存储引擎与事务机制:redo/undo日志、MVCC多版本并发、锁机制与四种事务隔离级别(脏读/不可重复读/幻读)。 · 经典设计思维与误区辨析:过度设计、大字段滥用、热点单表、逻辑删除与唯一约束冲突等常见误区的复盘与纠正。 金融案例锚点:以理财“账户表+交易流水表”的建模与索引设计为范例。 |
| 领域驱动的数据库设计 |
· DDD与数据建模衔接:战略设计中的限界上下文与上下文映射,如何落成数据库的物理边界。 · 聚合根与一致性边界:聚合内强一致、聚合间最终一致,事务边界与并发控制的设计原则。 · 数据归属与共享:跨上下文的数据引用、防腐层(ACL)、主数据与合理冗余的取舍。 · 金融核心域建模实战:理财、结算、账户、额度等核心域从领域模型到表结构的完整建模示范。 · 金融案例锚点:结算域的聚合拆分:账户与交易的一致性边界如何界定、跨上下文如何引用主数据。 实操与互动:把一个“单体大表/宽表”按限界上下文重构拆分为多表模型,并说明一致性边界。 |
| 数据库性能优化实践 |
· 性能问题定位路径:指标体系(TPS/RT/资源利用率)、慢查询捕获与慢日志/性能分析的整体诊断框架。 · 执行计划解读:cost代价模型、连接算法、驱动表选择、统计信息失真对计划的误导与校正。 · 慢SQL分析与改写:深分页、隐式类型转换、字段上使用函数导致索引失效、批量与子查询的重写技巧。 · 容量与IO瓶颈:连接池配置、缓存机制、IO模型与关键参数对吞吐的影响与调优。 · 海量数据治理思路(拓展视野):冷热数据分层、分区/分表、归档与清理策略——按当前业务场景控制讲授深度。 · 金融案例锚点:理财报表慢查询从“分钟级”优化到“秒级”的全过程复盘(含改写前后执行计划对比)。 实操与互动:给定一段慢SQL与真实执行计划,小组完成定位与改写并汇报优化收益。 |
| 跨库事务与数据一致性 |
· 分布式事务模型对比:2PC、TCC、Saga、本地消息表、事务消息的适用场景、性能与实现复杂度对比。 · 结算数据库隔离方案:账务库与结算库的隔离设计,避免彼此拖累、保障核心交易稳定性。 · 跨库事务管理:分库分表场景下的跨库一致性协调、幂等设计与重试补偿。 · 最终一致性与对账:对账体系建设、差错识别与处理、补偿/冲正机制设计。 · 金融案例锚点:跨“理财库/结算库”的一笔交易:一致性保障方案与对账补偿闭环设计。 实操与互动:接口设计TCC或Saga改造方案,并定义补偿与幂等逻辑。 |
|
MySQL迁移TDSQL实战 Oracle迁移GaussDB实战 重点:数据库改造实践、从经验中避免踩坑,模拟交易系统实操 |
· 改造业务系统 银行信贷新核心建设(基于基于云原生、TDSQL) 核心交易与核算分离设计(基于GaussDB) 数字银行平台 · 面临三大问题 SQL适配 数据类型兼容性 字符集和编码 应用代码改造 数据迁移 数据验证和一致性检查 性能调优 数据量和性能 · 如上业务系统架构阐述 核心需求评估分析 业务功能模块描述 分析评估业务模块是否拆分 迁移工作量分析 分析评估Java应用中SQL、存储过程等兼容性 数据库对象生成 开发规范文档 应用改造最佳实践、架构优化方案 连接池治理 · 开发&测试阶段 应用功能改造和测试 应用层功能改造(是否以云原生架构改造) SQL改造、存储过程改造、JOB改造、业务数据同步链路改造 应用层功能全回归测试 应用层性能压测、分析、优化 DB层性能压测 · 设计技巧 灵活运用NF 灵活使用TDSQL、GaussDB的特殊数据类型 有所取舍,将数据库性能不足的地方由应用完成 根据场景选择合适索引 分库分表 存算分离架构 · 数据迁移 迁移工具简介 迁移前准备 数据迁移 迁移常见问题及应对措施 · 应用迁移 迁移实施流程 应用迁移约束 应用迁移方案 分析评估J2EE应用中SQL的兼容性 调整不兼容的SQL,更新应用 自动化回归测试 应用上线建议 时间窗口内可完成数据迁移 时间窗口内无法完成数据迁移迁移 · MySQL、Oracle兼容特性概览 PL/SQL语言兼容特性 记录类型 集合类型 基本过程语句 控制流语句 异常处理 游标 匿名块、存储过程和函数 包 触发器 消息输出 内置标量函数 Truncate语句 层次查询 ROWNUM伪列 ROWID伪列 外连接操作符(’+’) DUAL伪表 SELECT INTO 的FOR UPDATE子句 UPDATE[前缀]多列更新 INSERT INTO TABLE([前缀]列) DELETE [FROM]语句 MERGE INTO语句 WITH子句 FORCE VIEW语句 支持SEQUENCE语句 模式兼容特性 扩展数据类型 模式变更 序列 索引 约束 同义词 视图 物化视图 全局临时表 水平分区 数据库链接 系统视图 大对象 · TDSQL、GaussDB数据库表设计 数据分布机制 分布式数据模型设计 分区策略优化 索引设计法则 索引类型与适用场景 索引碎片化治理 乐观锁使用场景 核心交易与核算场景最佳实践 使用INCLUDE子句减少磁盘IO 设置UNIQUE约束保障数据一致性 定期执行ANALYZE更新索引统计信息 设计要点 · 按时间分区实现历史数据自动归档 · 使用RESOURCE GROUP限制交易高峰期资源占用 · 启用版本控制防止数据误删 信贷场景最佳实践 配置分词器支持中文语义分析 结合pg_trgm扩展实现模糊搜索 置search_path优化查询路由 按季度分区实现历史数据归档 客户ID轮询分布保障负载均衡 预定义状态枚举类型减少存储开销 自动创建复合索引 列式存储+压缩降低I/O负载 全文索引支持模糊搜索 预关联类别数据提升查询效率 时序数据最佳实践 启用enable_partition_pruning分区裁剪 使用CONCURRENTLY模式在线扩容索引 配置auto_explain分析慢查询 时间分区支持亿级数据存储 BRIN索引加速时间范围查询 自动化冷热数据分离策略 · 生产环境分布式ID实战以及分库分表 应用层和数据库两种数据分片方式的核心区别 数据分片设计的算法评估模型 水平分库分表后带来的问题(业务代码需要调整) 非分片字段的查询 跨库分页 跨库排序 跨库Jion查询 分布式事务 数据量评估和预案 · 关联其他应用场景 新单秒级各端同步 查询与数据分析 分布式缓存 数仓衔接 · 核心问题 流量迁移如何细粒度监控 如何解决双写期间DB一致性问题 引入缓存后导致的数据不同步问题处理 存量数据如何一次性校准 · 一些数据库特性差异问题 自增键问题 日期精度问题 XML\BLOB字段问题 存储过程、触发器、函数、包问题 不合理的执行计划 统计信息采集不及时 大表采样统计信息不准确 多字段条件组合的选择率估算不准确 缓存的执行计划不适用所有代入参数:针对JDBC连接字符串中设置 优化器算法缺陷 SQL改写优化 多个Join条件组合 · 预警实践 百亿级数据差异校验预警 · 表连接优化技术 关联算子 控制算子 物化算子 扫描算子 嵌套循环连接:导致性能问题 · 测试和验证 并发测试(8、16、……2048) TB级数据库容量评估,模拟客户多年业务数据 混合场景下测试:统计各类交易业务平均相应时间、业务处理能跑(TPS)等性能指标 · 热点数据治理,场景应用 数据预拆分:针对秒杀场景的表,按用户ID末位取模分散写入 读写分离:通过readable参数实现查询负载均衡 缓存优化:利用HINT指令引导热点数据访问本地缓存 · 事务处理优化 并行提交:基于MVCC的多版本并发控制 事务隔离级别 长事务监控:设置tx_timeout参数防止超时锁 · 表碎片化治理策略 · 内存与1/0优化 · 内存泄漏排查 · WAL文件优化 · 表膨胀处理(VACUUM策略) · 消除单点写入瓶颈问题 · 响应时间抖动消除 · 少量join性能下降原因分析 · 频繁更新的小表查询缓慢 异地多活架构进阶:如何解决写后立即读场景问题 |
| AI赋能数据库设计与治理:讲解某大行实践落地案例 |
· 设计指南知识库化:指南条款的结构化、规则库与向量化,构建可被AI检索的设计规范RAG底座。 · AI辅助规范检查:对DDL/建模结果进行规范自动校验,输出缺陷提示与整改建议。 · AI生成合规代码:以设计指南为约束,让AI生成的DDL与数据访问代码自动符合规范,减少返工。 · AI在性能诊断中的应用:利用AI做慢SQL归因、索引推荐与优化建议生成,与人工判断协同。 · 金融案例锚点:接入AI工具,对一份建表脚本完成一次规范检查与自动整改建议实操。 实操与互动:分组工作坊:完整走通“指南入库→AI检查→AI生成→人工评审”全链路并复盘。 |
| 高性能设计最佳实践 |
· 高并发写入与热点处理:热点账户/热点行的识别与治理、批量合并写入、异步削峰与队列缓冲。 · 缓存与数据库协同:缓存一致性策略、击穿/穿透/雪崩防护、双写与失效顺序设计。 · 读写分离与分库分表:拆分键选取、读写路由、在线扩容与数据迁移方案。 · 可观测性与应急预案:关键监控指标、慢查询告警、容量预案与降级/限流设计。 金融案例锚点:理财高峰写入场景:热点账户治理与削峰方案的设计与复盘。 |
|
TDSQL、GaussDB、GaussDWS 架构特性对比、适用场景、特性驱动的优化实践、选型与迁移注意事项 · 架构与产品定位对比:三者的分布式架构、HTAP能力与各自适用场景(交易库/分析库/一体化) 事务处理、隔离级别 索引与访问路径原理:B+树/哈希索引结构、覆盖索引、最左前缀与索引下推,索引失效的典型场景与识别方法。 索引碎片导致执行计划问题分析和解决 表设计以及主键设计原则 锁机制 · 关键能力特性:分布式事务、并行查询、向量化执行、行列混存、弹性扩缩容等特性的原理与收益。 · 特性驱动的优化实践:依据产品特性设计表结构、分布键与索引,让查询贴合引擎优势。 · 选型与迁移注意事项:兼容性差异、改造成本评估、灰度上线与回退方案。 · 金融案例锚点:GaussDWS承载分析型报表、TDSQL承载交易库:如何让特性在两类负载上充分发挥。 · 实操与互动:针对一张高并发交易表完成分布键选择与数据倾斜治理练习。 · SQL优化本质和优化技术 数据访问方式效率的对比:全表扫描与索引扫描 多表连接的执行计划、适用场景与优劣势 (1)嵌套循环 (2)合并连接 (3)哈希连接 SQL调优方法论-执行计划深度分析 · 影响性能的因素(架构、数据特性、业务需求等) · GaussDB Ustore存储引擎解读 · 存储引擎与事务机制:redo/undo日志、MVCC多版本并发、锁机制与四种事务隔离级别(脏读/不可重复读/幻读)。 · 经典设计思维与误区辨析:过度设计、大字段滥用、热点单表、逻辑删除与唯一约束冲突等常见误区的复盘与纠正。 金融案例锚点:以理财“账户表+交易流水表”的建模与索引设计为范例。 |
|
领域驱动的数据库设计 · DDD与数据建模衔接:战略设计中的限界上下文与上下文映射,如何落成数据库的物理边界。 · 聚合根与一致性边界:聚合内强一致、聚合间最终一致,事务边界与并发控制的设计原则。 · 数据归属与共享:跨上下文的数据引用、防腐层(ACL)、主数据与合理冗余的取舍。 · 金融核心域建模实战:理财、结算、账户、额度等核心域从领域模型到表结构的完整建模示范。 · 金融案例锚点:结算域的聚合拆分:账户与交易的一致性边界如何界定、跨上下文如何引用主数据。 实操与互动:把一个“单体大表/宽表”按限界上下文重构拆分为多表模型,并说明一致性边界。 |
|
数据库性能优化实践 · 性能问题定位路径:指标体系(TPS/RT/资源利用率)、慢查询捕获与慢日志/性能分析的整体诊断框架。 · 执行计划解读:cost代价模型、连接算法、驱动表选择、统计信息失真对计划的误导与校正。 · 慢SQL分析与改写:深分页、隐式类型转换、字段上使用函数导致索引失效、批量与子查询的重写技巧。 · 容量与IO瓶颈:连接池配置、缓存机制、IO模型与关键参数对吞吐的影响与调优。 · 海量数据治理思路(拓展视野):冷热数据分层、分区/分表、归档与清理策略——按当前业务场景控制讲授深度。 · 金融案例锚点:理财报表慢查询从“分钟级”优化到“秒级”的全过程复盘(含改写前后执行计划对比)。 实操与互动:给定一段慢SQL与真实执行计划,小组完成定位与改写并汇报优化收益。 |
|
跨库事务与数据一致性 · 分布式事务模型对比:2PC、TCC、Saga、本地消息表、事务消息的适用场景、性能与实现复杂度对比。 · 结算数据库隔离方案:账务库与结算库的隔离设计,避免彼此拖累、保障核心交易稳定性。 · 跨库事务管理:分库分表场景下的跨库一致性协调、幂等设计与重试补偿。 · 最终一致性与对账:对账体系建设、差错识别与处理、补偿/冲正机制设计。 · 金融案例锚点:跨“理财库/结算库”的一笔交易:一致性保障方案与对账补偿闭环设计。 实操与互动:接口设计TCC或Saga改造方案,并定义补偿与幂等逻辑。 |
|
MySQL迁移TDSQL实战 Oracle迁移GaussDB实战 重点:数据库改造实践、从经验中避免踩坑,模拟交易系统实操 · 改造业务系统 银行信贷新核心建设(基于基于云原生、TDSQL) 核心交易与核算分离设计(基于GaussDB) 数字银行平台 · 面临三大问题 SQL适配 数据类型兼容性 字符集和编码 应用代码改造 数据迁移 数据验证和一致性检查 性能调优 数据量和性能 · 如上业务系统架构阐述 核心需求评估分析 业务功能模块描述 分析评估业务模块是否拆分 迁移工作量分析 分析评估Java应用中SQL、存储过程等兼容性 数据库对象生成 开发规范文档 应用改造最佳实践、架构优化方案 连接池治理 · 开发&测试阶段 应用功能改造和测试 应用层功能改造(是否以云原生架构改造) SQL改造、存储过程改造、JOB改造、业务数据同步链路改造 应用层功能全回归测试 应用层性能压测、分析、优化 DB层性能压测 · 设计技巧 灵活运用NF 灵活使用TDSQL、GaussDB的特殊数据类型 有所取舍,将数据库性能不足的地方由应用完成 根据场景选择合适索引 分库分表 存算分离架构 · 数据迁移 迁移工具简介 迁移前准备 数据迁移 迁移常见问题及应对措施 · 应用迁移 迁移实施流程 应用迁移约束 应用迁移方案 分析评估J2EE应用中SQL的兼容性 调整不兼容的SQL,更新应用 自动化回归测试 应用上线建议 时间窗口内可完成数据迁移 时间窗口内无法完成数据迁移迁移 · MySQL、Oracle兼容特性概览 PL/SQL语言兼容特性 记录类型 集合类型 基本过程语句 控制流语句 异常处理 游标 匿名块、存储过程和函数 包 触发器 消息输出 内置标量函数 Truncate语句 层次查询 ROWNUM伪列 ROWID伪列 外连接操作符(’+’) DUAL伪表 SELECT INTO 的FOR UPDATE子句 UPDATE[前缀]多列更新 INSERT INTO TABLE([前缀]列) DELETE [FROM]语句 MERGE INTO语句 WITH子句 FORCE VIEW语句 支持SEQUENCE语句 模式兼容特性 扩展数据类型 模式变更 序列 索引 约束 同义词 视图 物化视图 全局临时表 水平分区 数据库链接 系统视图 大对象 · TDSQL、GaussDB数据库表设计 数据分布机制 分布式数据模型设计 分区策略优化 索引设计法则 索引类型与适用场景 索引碎片化治理 乐观锁使用场景 核心交易与核算场景最佳实践 使用INCLUDE子句减少磁盘IO 设置UNIQUE约束保障数据一致性 定期执行ANALYZE更新索引统计信息 设计要点 · 按时间分区实现历史数据自动归档 · 使用RESOURCE GROUP限制交易高峰期资源占用 · 启用版本控制防止数据误删 信贷场景最佳实践 配置分词器支持中文语义分析 结合pg_trgm扩展实现模糊搜索 置search_path优化查询路由 按季度分区实现历史数据归档 客户ID轮询分布保障负载均衡 预定义状态枚举类型减少存储开销 自动创建复合索引 列式存储+压缩降低I/O负载 全文索引支持模糊搜索 预关联类别数据提升查询效率 时序数据最佳实践 启用enable_partition_pruning分区裁剪 使用CONCURRENTLY模式在线扩容索引 配置auto_explain分析慢查询 时间分区支持亿级数据存储 BRIN索引加速时间范围查询 自动化冷热数据分离策略 · 生产环境分布式ID实战以及分库分表 应用层和数据库两种数据分片方式的核心区别 数据分片设计的算法评估模型 水平分库分表后带来的问题(业务代码需要调整) 非分片字段的查询 跨库分页 跨库排序 跨库Jion查询 分布式事务 数据量评估和预案 · 关联其他应用场景 新单秒级各端同步 查询与数据分析 分布式缓存 数仓衔接 · 核心问题 流量迁移如何细粒度监控 如何解决双写期间DB一致性问题 引入缓存后导致的数据不同步问题处理 存量数据如何一次性校准 · 一些数据库特性差异问题 自增键问题 日期精度问题 XML\BLOB字段问题 存储过程、触发器、函数、包问题 不合理的执行计划 统计信息采集不及时 大表采样统计信息不准确 多字段条件组合的选择率估算不准确 缓存的执行计划不适用所有代入参数:针对JDBC连接字符串中设置 优化器算法缺陷 SQL改写优化 多个Join条件组合 · 预警实践 百亿级数据差异校验预警 · 表连接优化技术 关联算子 控制算子 物化算子 扫描算子 嵌套循环连接:导致性能问题 · 测试和验证 并发测试(8、16、……2048) TB级数据库容量评估,模拟客户多年业务数据 混合场景下测试:统计各类交易业务平均相应时间、业务处理能跑(TPS)等性能指标 · 热点数据治理,场景应用 数据预拆分:针对秒杀场景的表,按用户ID末位取模分散写入 读写分离:通过readable参数实现查询负载均衡 缓存优化:利用HINT指令引导热点数据访问本地缓存 · 事务处理优化 并行提交:基于MVCC的多版本并发控制 事务隔离级别 长事务监控:设置tx_timeout参数防止超时锁 · 表碎片化治理策略 · 内存与1/0优化 · 内存泄漏排查 · WAL文件优化 · 表膨胀处理(VACUUM策略) · 消除单点写入瓶颈问题 · 响应时间抖动消除 · 少量join性能下降原因分析 · 频繁更新的小表查询缓慢 异地多活架构进阶:如何解决写后立即读场景问题 |
|
AI赋能数据库设计与治理:讲解某大行实践落地案例 · 设计指南知识库化:指南条款的结构化、规则库与向量化,构建可被AI检索的设计规范RAG底座。 · AI辅助规范检查:对DDL/建模结果进行规范自动校验,输出缺陷提示与整改建议。 · AI生成合规代码:以设计指南为约束,让AI生成的DDL与数据访问代码自动符合规范,减少返工。 · AI在性能诊断中的应用:利用AI做慢SQL归因、索引推荐与优化建议生成,与人工判断协同。 · 金融案例锚点:接入AI工具,对一份建表脚本完成一次规范检查与自动整改建议实操。 实操与互动:分组工作坊:完整走通“指南入库→AI检查→AI生成→人工评审”全链路并复盘。 |
|
高性能设计最佳实践 · 高并发写入与热点处理:热点账户/热点行的识别与治理、批量合并写入、异步削峰与队列缓冲。 · 缓存与数据库协同:缓存一致性策略、击穿/穿透/雪崩防护、双写与失效顺序设计。 · 读写分离与分库分表:拆分键选取、读写路由、在线扩容与数据迁移方案。 · 可观测性与应急预案:关键监控指标、慢查询告警、容量预案与降级/限流设计。 金融案例锚点:理财高峰写入场景:热点账户治理与削峰方案的设计与复盘。 |
近期公开课推荐