大数跨境
0
0

新书推荐 | 一本好书,深入解析分布式数据库TiDB

新书推荐 | 一本好书,深入解析分布式数据库TiDB 刚哥的运营笔记
2025-08-08
0
导读:《分布式数据库TiDB:原理、优化与架构设计》深入解析TiDB的设计理念及其背后的技术架构,无论是希望掌握TiDB技术的开发者,还是希望了解云原生数据库发展趋势的管理者,都能在本书中找到有价值的知识与


《分布式数据库TiDB:原理、优化与架构设计》深入解析TiDB的设计理念及其背后的技术架构,无论是希望掌握TiDB技术的开发者,还是希望了解云原生数据库发展趋势的管理者,都能在本书中找到有价值的知识与见解。黄东旭、杜小勇、周傲英作序推荐。



在互联网、大数据与人工智能技术飞速发展的时代,数据的规模呈指数级增长,数据应用场景愈加复杂多样。面对挑战,数据库技术也在不断演进,呈现出新范式、新架构、新技术。云原生分布式数据库就是其中之一。TiDB数据库充分发挥了云基础设施的虚拟化、高可用性和弹性伸缩等优点,为用户提供了更为灵活与强大的数据管理能力,是云原生分布式数据库的杰出代表之一。

《分布式数据库TiDB:原理、优化与架构设计》结合TiDB数据库技术,深入浅出地探讨了分布式云原生数据库的基础理论,涵盖了存算分离、HTAP(混合事务和分析处理)、Serverless架构、多租户管理以及资源隔离与管控等新兴数据库应用场景。

阅读本书,读者将能够全面理解TiDB的设计理念及其背后的技术架构。特别是在第一部分运行原理中,作者深入剖析了TiDB的分布式系统设计理念和云原生技术的特点。通过对这部分内容的学习,读者不仅能够掌握TiDB的基本操作,还能进一步理解云原生数据库的优化艺术和架构特征。

一、分布式数据库TiDB运行原理深度剖析


1. TiDB架构全景图

  • TiDB Server:无状态SQL层,负责SQL解析、分布式执行计划生成,支持MySQL协议

  • TiKV:基于Raft的分布式KV存储引擎,实现数据强一致性与水平扩展

  • PD集群:全局元数据管理大脑,负责TSO分配、负载均衡调度

  • TiFlash:列存引擎支持实时HTAP,通过异步复制与智能路由实现OLAP加速


2. 关键技术解密

  • Raft协议:Multi-Raft机制实现Region级数据分片与故障自愈

  • 分布式事务:Percolator模型保障跨节点ACID,采用乐观锁与两阶段提交

  • MVCC机制:混合逻辑时钟(HLC)实现多版本并发控制

  • Coprocessor:计算下推技术减少网络传输,提升复杂查询性能


二、性能优化实战方法论


1. 表结构设计黄金法则

  • 聚簇索引表 vs 非聚簇索引表:写入热点与查询性能的平衡艺术

  • 热点问题解决方案:

  • 预分裂Region配合SHARD_ROW_ID_BITS分散写入

  • 时间序列数据采用AUTO_RANDOM主键设计

  • 利用PD监控面板定位Region读写压力


2. SQL优化四步法

-- 示例:索引合并优化

EXPLAIN SELECT * FROM orders 

WHERE customer_id=1001 AND order_date>'2023-01-01'; 

/* 使用INDEX_MERGE(cust_idx, date_idx) */

  • 执行计划解读:识别TableReader、IndexLookUp、HashJoin等关键算子

  • 统计信息管理:动态采集+手动补全,解决数据倾斜导致的估算偏差

  • 执行计划绑定:通过SQL Binding固化最优执行路径


3. 系统级调优关键指标

组件

核心监控项

优化方向

TiKV

grpc_avg > 50ms

调整raftstore.apply-pool-size

PD

region_heartbeat 延迟

提升region-schedule-limit

TiDB

expensive_query 告警

优化tidb_mem_quota_query配置


三、高可用架构设计指南


1. 多中心部署模式对比

  • 同城三中心:Raft 5副本+Label调度,容忍单数据中心故障

  • 两地三中心:异步复制+同步集群,实现跨地域容灾

  • 混合云架构:TiCDC实现跨云实时同步,支持多云容灾


2. HTAP场景实践

  • 列存加速:TiFlash通过DeltaTree引擎实现实时数据同步

  • MPP计算:利用tidb_enforce_mpp强制分布式并行执行

  • 资源隔离:通过Resource Control限制OLAP查询资源占用


3. Serverless演进之路

  • 动态资源池化:按负载自动扩缩计算节点

  • 存储自动分层:热数据存TiKV,冷数据归档至对象存储

  • 成本优化:基于请求单元(RU)的精细化计费模型



四、本书的结构与内容


本书以TiDB数据库为基础介绍分布式数据库的运行原理、性能优化和应用场景架构设计。首先,剖析分布式数据库的运行原理与架构;然后,阐述分布式数据库TiDB在表与索引的设计优化、SQL优化、系统级优化方面的方法论,通过融入多个有代表性的案例,帮助读者将方法论对应到生产实践中;最后,梳理场景选型和架构设计过程中读者应该掌握的主要知识点,并对一些分布式数据库的优势场景进行了详细介绍。

本书共15章,分为三部分,即运行原理、性能优化和应用场景架构设计。

第一部分(第1~5章)主要以TiDB数据库为基础,介绍分布式数据库的运行原理与设计思路。这部分内容是后续内容的基础,如果读者希望未来从事与分布式数据库相关的工作,则需要理解和掌握这部分内容。在这部分中读者会学习分布式计算引擎TiDB Server的架构与运行原理、最核心的分布式存储引擎TiKV集群的运行原理,以及有着TiDB数据库“大脑”之称的PD集群的核心架构与设计思想。这部分的核心知识包括:SQL解析流程、数据持久化、分布式数据库一致性协议Raft、MVCC、分布式事务、协同计算、列存储(简称为列存)等。只有掌握了这些内容,才能在后面的学习或工作中做到知其然知其所以然。

第二部分(第6~9章)介绍分布式数据库的性能优化,这是一个方法论与实战案例相结合的部分,读者可以再细分成两个方向来学习。首先是分布式数据库SQL的优化,我们将介绍如何在分布式数据库上写出避免读写热点并能够利用分布式数据库并行、MPP等优势的具有良好性能的SQL语句。其次我们重点介绍基于系统参数和性能监控的系统级别优化,讲解各个性能监控图与指标的含义和判断方法,并根据运行原理对相关参数进行解读,再以实战案例为切入点,总结出多套常用的系统优化方法论。

第三部分(第10~15章)介绍如何进行数据库架构设计和场景选型。针对架构设计中最为重要的高可用架构设计,我们详尽分析各种场景下TiDB分布式数据库的高可用特性和设计要点,包括同城三中心、同城两中心、同中心、两地三中心和异步复制等架构的优缺点等。针对场景选型,我们会从原理和应用两个层面对TiDB数据库的HTAP场景设计、Online DDL、资源管控、多租户和Serverless特性进行阐述。


上下滑动阅览


目 录

丛书序 中国工程院院士 郑纬民

推荐序一 PingCAP联合创始人兼CTO 黄东旭

推荐序二 CCF数据库专委原主任 杜小勇

推荐序三 CCF数据库专委主任 周傲英

前言

第一部分 运行原理

第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 定位慢查询  202

8.3.2 定位有问题的SQL  204

8.3.3 定位TiDB Server或TiKV上最耗时的SQL  206

8.3.4 定位热点问题  207

8.3.5 锁与事务的诊断  207

8.3.6 如何诊断整体读写性能问题  217

8.3.7 如何诊断问题出现在哪个组件  219

8.3.8 写入性能的诊断方法  224

8.3.9 大量查询超时的诊断方法  232

8.3.10 PD调度慢的诊断方法  238

8.3.11 PD频繁调度的诊断方法  239

第9章  系统变量与配置参数的优化  242

9.1 硬件与操作系统的配置优化  242

9.1.1 CPU配置  242

9.1.2 内存配置  243

9.1.3 NUMA绑定  244

9.1.4 IO配置  244

9.1.5 网络配置  245

9.1.6 操作系统配置  246

9.1.7 TiDB数据库部署检测  247

9.1.8 TiDB数据库的推荐硬件配置  248

9.1.9 TiDB数据库的混合部署  248

9.2 TiDB数据库的系统变量优化  249

9.2.1 并发控制  249

9.2.2 批处理  253

9.2.3 Backoff  254

9.2.4 执行计划缓存  254

9.3 TiDB Server的配置参数优化  256

9.3.1 资源分配  256

9.3.2 并行处理  258

9.4 TiKV集群的配置参数优化  259

9.4.1 TiKV写入配置参数的优化  259

9.4.2 TiKV读取配置参数的优化  263

9.4.3 RocksDB相关配置参数的优化  266

9.5 PD的配置参数优化  268

9.5.1 TiKV消费速度控制  270

9.5.2 存储空间阈值配置参数  270

9.5.3 leader-schedule-limit / region-schedule-limit  271

9.5.4 replica-schedule-limit  274

9.5.5 hot-region-schedule-limit  275

9.5.6 merge-schedule-limit  277

第三部分 应用场景架构设计

第10章  高可用架构设计  283

10.1 分布式数据库的高可用概述  283

10.2 TiDB数据库的高可用能力  284

10.2.1 数据的高可用性与一致性  284

10.2.2 自动故障转移能力  286

10.3 TiDB数据库常用的高可用架构  293

10.3.1 同城三中心架构  294

10.3.2 同城两中心架构  295

10.3.3 同中心架构  301

10.3.4 两地三中心架构  302

第11章  异步复制架构设计  309

11.1 TiDB数据库的异步复制  309

11.2 基于TiDB Binlog的异步复制架构  310

11.2.1 原理  310

11.2.2 Pump集群  311

11.2.3 Drainer  311

11.3 基于TiCDC的异步复制架构  312

11.3.1 原理  312

11.3.2 Changefeed与Task  313

11.3.3 适用场景  314

11.4 如何保证主从一致性读取和校验  315

第12章  HTAP场景架构设计  318

12.1 HTAP场景概述  318

12.2 TiDB数据库的HTAP场景架构  319

12.3 MPP架构  320

12.3.1 MPP架构的原理  321

12.3.2 MPP架构的相关算子  326

第13章  Online DDL  329

13.1 Online DDL概述  329

13.2 Online DDL状态  331

13.3 从Absent到Delete only  334

13.4 从Delete only到Write only  338

13.5 从Write only到Write Reorganization  344

13.6 从Write Reorganization到Public  348

13.7 如果没有Delete only状态  351

13.8 如果没有Write only状态  354

13.9 Online DDL真的不影响事务吗  358

13.10 事务不报错的解决方案  365

第14章  数据库整合与资源管控  369

14.1 数据库整合场景概述  369

14.2 传统多租户数据库架构  371

14.3 TiDB数据库的资源管控  372

14.4 TiDB数据库的差异化高可用等级  377

14.5 TiDB数据库的冷热分离实现  379

14.6 存算一体和存算分离架构在数据库整合中的差异  381

第15章  TiDB Serverless  384

15.1 数据库负载变化案例  384

15.2 数据量差异案例  386

15.3 TiDB Serverless的架构  388

15.4 TiDB Serverless的最佳适用场景  391

拓展阅读  393




五、本书特色



权威性:作者为TiDB数据库原厂系列课程与考试的开发者

系统性:包含原理篇、性能优化篇和应用场景架构设计篇三个篇章

专业性:详细分布式数据库的运行原理、SQL优化、系统优化和应用场景架构设计

可读性:内含大量插图、示例、伪代码,便于阅读理解


六、适读人群



  • 高校学生和科研人员

  • 技术开发人员

  • 数据库行业从业人员


七、编写团队



董菲

现任PingCAP首席讲师,前甲骨文(Oracle)首席讲师,曾就职于Oracle、空中网、中国铁路科学研究院、微软中国等企业。多年从事企业培训、数据分析、架构设计、系统开发与维护等工作。TiDB数据库官方系列课程“TiDB数据库核心原理与架构”“TiDB数据库管理” “TiDB性能调优”“TiDB故障排除案例学习”等的主要讲者,TiDB数据库官方考试PCTA(平凯数据库认证TiDB数据库专员)和PCTP(平凯数据库认证TiDB数据库管理专家)的主要开发者。

包光磊

现任PingCAP赋能创新(engage ment.innovation)总负责人,曾经担任亚马逊中国区架构师高级经理,甲骨文中国架构师、首席讲师。他是中国区首位亚马逊资深技术讲师,中国首位11g.OCM(Oracle认证大师)获得者,畅销书《临危不惧:Oracle11g数据库恢复技术》作者, 曾于2006年、2007年、2010年与2011年被 Oracle公司授予Oracle.University年度全球最佳讲师荣誉称号。2016年被亚马逊授予年度行动至上领导力称号。目前致力于利用前沿技术为全球客户提供TiDB教学与培训以及TiDB的推广。

王岩广

现任开放原子开源基金会教育培训部部长,本科毕业于南京大学,研究生毕业于中国科学院大学和清华大学。曾任PingCAP公司教育合作总监,思科(中国)大学合作负责人,IBM(中国)系统实验室高性能计算软件开发部门负责人。长期关注产学研合作和人才培养。

黄偲韡

开源数据库爱好者,多年从事数据仓库优化与架构设计工作。长期关注TiDB数据库与开源社区,为多家企业提供开源数据库的选型、优化和设计开发顾问服务。


八、专家推荐


TiDB 作为国产开源数据库的杰出代表,以其先进的架构设计、灵活的横向扩展能力和开源生态,逐渐赢得了企业界的广泛欢迎和学术界的高度关注。在研究开源软件产业时,我们也注意到,TiDB 在技术领先性、适用场景和商业模式上的优越性,得到了国内外行业专家的普遍认可。

阅读本书,您将发现开源软件在技术转化、产品打磨和创新应用中的独特优势,以及它与传统软件生产模式的差异之处。对于开发者、架构师和研究人员来说,本书无疑是一份启发深远的技术指南。

——华东师范大学教授,王伟


分布式数据库目前在产业界得到了广泛应用。与传统单机数据库相比,分布式数据库背后有许多新的方法和协议支持,如LSM-Tree 数据组织、Raft 共识协议、Percolator 两阶段事务提交模型等。作为拥有大量企业级用户的分布式数据库产品,TiDB 已积累了丰富且成熟的实践经验。


《分布式数据库 TiDB 原理、架构与性能优化》一书,从方法、实践和应用场景三个层面进行了系统介绍,不仅帮助读者掌握分布式数据库的基本原理,还通过实际应用案例和企业级场景的落地实践,提供了宝贵的经验。对于读者理解分布式系统的架构、提升实际应用能力以及优化企业级场景的解决方案,本书都具有重要的参考价值。

——中国人民大学教授 卢卫


分布式数据库TiDB课程体系经历多年打磨已经成熟,并在企业、高校、开源用户中推广普及。本书凝结四位作者多年TiDB教学和开源人才培养经验,深入浅出地讲解TiDB的体系结构、性能调优和大规模集群最佳实践等相关内容。相信本书能让大家对TiDB数据库有更全面、更深入的理解。

——TiDB社区资深版主 严少安





图片


图片
图片

点击“阅读原文”,加入CCF。

【声明】内容源于网络
0
0
刚哥的运营笔记
跨境分享舍 | 长期分享行业参考
内容 42972
粉丝 0
刚哥的运营笔记 跨境分享舍 | 长期分享行业参考
总阅读236.3k
粉丝0
内容43.0k