课程简介
本课程是基于金融行业技术实践和业务应用场景,结合当前企业级应用场景进行综合性课程设计。从专业知识,专业技能,通用技能多维度全面培养数据库优化人才的的综合能力。
目标收益
掌握该数据库性能优化等方面,并应用到实际项目中;
掌握如何从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生成→人工评审”全链路并复盘。 |
|
高性能设计最佳实践 高并发写入与热点处理:热点账户/热点行的识别与治理、批量合并写入、异步削峰与队列缓冲。 缓存与数据库协同:缓存一致性策略、击穿/穿透/雪崩防护、双写与失效顺序设计。 读写分离与分库分表:拆分键选取、读写路由、在线扩容与数据迁移方案。 可观测性与应急预案:关键监控指标、慢查询告警、容量预案与降级/限流设计。 金融案例锚点:理财高峰写入场景:热点账户治理与削峰方案的设计与复盘。 |
近期公开课推荐