叢書序
推薦序一
推薦序二
推薦序三
前言
第一部分 運行原理
第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 執(zhí)行調度 082
第5章 ?列存與MPP計算引擎TiFlash的架構與原理 083
5.1 TiFlash的架構 083
5.2 TiFlash的關鍵特性 084
5.3 異步復制 085
5.4 一致性讀取 086
5.5 智能選擇 091
第二部分 性能優(yōu)化
第6章 ?表與索引的設計優(yōu)化 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 熱點的監(jiān)控 113
6.6.4 熱點的解決 116
6.7 表與索引的設計優(yōu)化總結 127
第7章 ?SQL優(yōu)化 129
7.1 TiDB數據庫優(yōu)化器的工作原理 129
7.1.1 TiDB數據庫優(yōu)化器的工作流程 129
7.1.2 預處理階段之點查 130
7.1.3 預處理階段中的構造初始邏輯執(zhí)行計劃 131
7.1.4 邏輯優(yōu)化 132
7.1.5 物理優(yōu)化 133
7.2 查看執(zhí)行計劃 136
7.3 數據查詢優(yōu)化之索引優(yōu)化 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 數據查詢優(yōu)化之聚合優(yōu)化 150
7.4.1 HashAgg算子 150
7.4.2 StreamAgg算子 154
7.5 數據查詢優(yōu)化之表連接優(yōu)化 157
7.5.1 Hash Join算子 157
7.5.2 Merge Join算子 160
7.5.3 Index Join算子 163
7.6 統(tǒng)計信息管理 166
7.6.1 統(tǒng)計信息的工作原理 167
7.6.2 統(tǒng)計信息的組成 172
7.6.3 統(tǒng)計信息監(jiān)控 181
7.6.4 收集統(tǒng)計信息 183
7.6.5 統(tǒng)計信息的導入與導出 189
7.7 執(zhí)行計劃管理 190
7.7.1 Optimizer Hints 190
7.7.2 執(zhí)行計劃綁定 193
7.8 SQL優(yōu)化最佳實踐 197
第8章 ?性能監(jiān)控與診斷 199
8.1 性能監(jiān)控概述 199
8.2 TiDB數據庫的監(jiān)控體系 199
8.2.1 Prometheus Grafana Alertmanager 199
8.2.2 TiDB Dashboard 201
8.3 常見的性能診斷方法 202
8.3.1 定位慢查詢