丛书序
推荐序一
推荐序二
推荐序三
前言
第一部分 运行原理
第1章 ?数据库架构概述 003
1.1 集中式数据库的特点 003
1.2 集中式数据库的典型架构 004
1.2.1 单体数据库架构 004
1.2.2 配合缓存机制的数据库架构 005
1.2.3 主从数据库架构 005
1.2.4 Shared-Nothing与Shared-Everything架构 006
1.2.5 交易型数据库 数据仓库 008
1.2.6 基于分表分库中间件的数据库集群架构 008
1.3 分布式数据库的特点 010
第2章 ?计算引擎TiDB Server的架构与原理 015
2.1 TiDB Server的架构 015
2.2 TiDB Server的主要功能 016
2.3 关系型数据与键值的转换 017
2.4 SQL读写相关模块 022
2.5 Online DDL相关模块 027
2.6 GC机制与相关模块 028
2.7 TiDB Server的缓存 030
2.7.1 TiDB Server缓存的组成结构 030
2.7.2 TiDB Server缓存管理 030
第3章 ?数据存储引擎TiKV的架构与原理 031
3.1 TiKV的特征 031
3.2 TiKV的架构和作用 032
3.3 RocksDB 033
3.3.1 RocksDB的作用与特点 033
3.3.2 RocksDB的写入与文件组织 034
3.3.3 RocksDB的查询 037
3.3.4 RocksDB的列族 038
3.4 Raft与Multi Raft 039
3.4.1 Raft—日志复制 041
3.4.2 Raft—leader选举 047
3.5 数据的写入 050
3.6 数据的读取—ReadIndex Read 051
3.7 数据的读取—Follower Read 055
3.8 MVCC 056
3.9 分布式事务 061
3.10 Coprocessor 069
第4章 ?TiDB的“大脑”——PD的架构与原理 073
4.1 PD的架构 073
4.2 PD的主要功能 074
4.3 路由功能 075
4.4 TSO分配 076
4.5 调度 080
4.5.1 为什么要调度 080
4.5.2 信息收集 081
4.5.3 生成调度 082
4.5.4 执行调度 082
第5章 ?列存与MPP计算引擎TiFlash的架构与原理 083
5.1 TiFlash的架构 083
5.2 TiFlash的关键特性 084
5.3 异步复制 085
5.4 一致性读取 086
5.5 智能选择 091
第二部分 性能优化
第6章 ?表与索引的设计优化 095
6.1 TiDB数据库中的两种表结构 095
6.1.1 聚簇索引表结构 095
6.1.2 非聚簇索引表结构 096
6.2 表与键值的映射方式 099
6.2.1 聚簇索引表中键值的映射方式 099
6.2.2 非聚簇索引表中键值的映射方式 100
6.3 TiDB中的索引结构 101
6.4 两种表结构的写入对比 103
6.4.1 非聚簇索引表的写入 103
6.4.2 聚簇索引表的写入 105
6.5 两种表结构的读取对比 107
6.5.1 非聚簇索引表的读取 107
6.5.2 聚簇索引表的读取 108
6.6 分布式数据库的热点问题 109
6.6.1 热点问题的形成原因 110
6.6.2 不同表结构的热点问题 111
6.6.3 热点的监控 113
6.6.4 热点的解决 116
6.7 表与索引的设计优化总结 127
第7章 ?SQL优化 129
7.1 TiDB数据库优化器的工作原理 129
7.1.1 TiDB数据库优化器的工作流程 129
7.1.2 预处理阶段之点查 130
7.1.3 预处理阶段中的构造初始逻辑执行计划 131
7.1.4 逻辑优化 132
7.1.5 物理优化 133
7.2 查看执行计划 136
7.3 数据查询优化之索引优化 138
7.3.1 点查Point_Get & Batch_Point_Get 139
7.3.2 IndexReader(索引读) IndexRangeScan(索引范围扫描) 140
7.3.3 IndexLookUp(回表索引读) IndexRangeScan(索引范围扫描)
TableRowIDScan(根据键读取表数据) 141
7.3.4 IndexFullScan(索引全扫描) 144
7.3.5 TableReader(表扫描) TableFullScan(全表扫描) 146
7.3.6 IndexMerge(索引合并) 147
7.4 数据查询优化之聚合优化 150
7.4.1 HashAgg算子 150
7.4.2 StreamAgg算子 154
7.5 数据查询优化之表连接优化 157
7.5.1 Hash Join算子 157
7.5.2 Merge Join算子 160
7.5.3 Index Join算子 163
7.6 统计信息管理 166
7.6.1 统计信息的工作原理 167
7.6.2 统计信息的组成 172
7.6.3 统计信息监控 181
7.6.4 收集统计信息 183
7.6.5 统计信息的导入与导出 189
7.7 执行计划管理 190
7.7.1 Optimizer Hints 190
7.7.2 执行计划绑定 193
7.8 SQL优化最佳实践 197
第8章 ?性能监控与诊断 199
8.1 性能监控概述 199
8.2 TiDB数据库的监控体系 199
8.2.1 Prometheus Grafana Alertmanager 199
8.2.2 TiDB Dashboard 201
8.3 常见的性能诊断方法 202
8.3.1 定位慢查询