MariaDB原理与实现

MariaDB原理与实现
作 者: 张金鹏 张成远 季锡强
出版社: 人民邮电出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 计算机/网络 软件工程/开发项目管理
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  张金鹏京东资深技术专家,MySQL数据库专家,京东云数据库组核心成员,主要负责MySQL内核优化及二次开发。多年数据库领域以及搜索引擎领域的工作经验,对Redis、Memcached等NoSQL数据库,以及CGroup、LXC、Docker等容器技术有深入的研究。新浪微博:弓长金鹏张成远京东资深架构师。毕业于东北大学,硕士阶段研究分布式数据库相关方向,2012年加入京东云数据库技术团队。擅长高性能服务器开发、分布式数据库、分布式存储/缓存等大规模分布式系统架构。主导了京东分布式数据库系统及容器系统的架构与开发工作。新浪微博:NEU_寒水季锡强京东资深架构师,主要负责京东分布式数据库的架构设计及研发工作,主导容器技术在京东的应用与推广。专注于高性能服务器、分布式数据库、分布式存储/缓存及容器技术,对容器核心技术及golang并发编程有深入研究。

内容简介

本书由浅入深地剖析了MariaDB,首先简要介绍了一些基础知识、新特性、对MySQL原有功能所做的扩展以及源代码,接着介绍了底层数据结构、线程池技术、binlog、复制等内容,最后介绍了分布式数据库系统。

图书目录

第1章

MariaDB概述

1 1.1

MariaDB的历史

1 1.2

MariaDB所做的事情

2 1.2.1

更丰富的存储引擎

2 1.2.2

性能的提升

2 1.2.3

扩展和新特性

3 1.2.4

更好的测试

3 1.2.5

尽量消除错误和警告

4 1.3

MariaDB的版本与兼容性

4 1.3.1

MariaDB 5.1和MySQL 5.1的不兼容性

4 1.3.2

MariaDB 5.2和MySQL 5.1的不兼容性

5 1.3.3

MariaDB 5.3和MySQL 5.1、MariaDB 5.2的不兼容性

5 1.3.4

MariaDB 5.5和MariaDB 5.3的不兼容性

6 1.3.5

MariaDB 5.5与MariaDB 5.3和MySQL 5.5 的不兼容性

7 1.3.6

MariaDB 10.0和MySQL 5.6的不兼容性

7 1.4

编译和安装MariaDB

8 1.4.1

使用二进制安装包进行安装

8 1.4.2

使用源代码进行编译安装

9 1.5

联系社区

11 1.6

小结

12 第2章

MariaDB的扩展和新特性

13 2.1

更多的存储引擎

13 2.1.1

全新的Aria存储引擎

13 2.1.2

XtraDB存储引擎

16 2.1.3

SphinxSE存储引擎

17 2.1.4

FederatedX存储引擎

17 2.1.5

TokuDB存储引擎

18 2.1.6

Cassandra存储引擎

18 2.1.7

CONNECT存储引擎

18 2.1.8

Sequence存储引擎

19 2.1.9

Spider存储引擎

20 2.2

线程池技术和binlog group commit技术

22 2.2.1

线程池技术

22 2.2.2

binlog group commit技术

23 2.3

MariaDB其他扩展和新特性

23 2.3.1

更高的时间精度

23 2.3.2

虚拟列

24 2.3.3

用户统计功能

25 2.3.4

KILL命令的扩展

27 2.3.5

命令执行进度报告

27 2.3.6

动态列

28 2.3.7

多源复制

29 2.4

小结

29 第3章

初识MariaDB源代码

31 3.1

MariaDB源代码的目录组织结构

31 3.2

MariaDB对类型和函数的封装

33 3.2.1

对类型的封装

33 3.2.2

对函数的封装

33 3.3

调试MariaDB

34 3.3.1

准备工作

34 3.3.2

mysqld关键的函数调用

37 3.3.3

调试

38 3.4

小结

40 第4章

MariaDB基础数据结构

41 4.1

内存池MEM_ROOT

41 4.1.1

内存碎片问题

42 4.1.2

MEM_ROOT的定义

44 4.1.3

MEM_ROOT的使用

46 4.1.4

MEM_ROOT的初始化

47 4.1.5

分配内存

48 4.1.6

内存回收

50 4.1.7

MEM_ROOT的使用场景

52 4.2

文件缓存IO_CACHE

52 4.2.1

高性能武器——缓存

53 4.2.2

IO_CACHE的定义

54 4.2.3

IO_CACHE的使用

57 4.3

NET结构

63 4.4

线程上下文——THD

65 4.5

TABLE_SHARE

69 4.6

TABLE

73 4.7

小结

76 第5章

MariaDB线程池

77 5.1

线程池相关的参数

77 5.1.1

MariaDB 5.1和MariaDB 5.3中的线程池

77 5.1.2

MariaDB 5.5和MariaDB 10.0中的线程池

78 5.2

何时使用线程池

79 5.3

线程池的实现

79 5.3.1

线程池相关的数据结构

80 5.3.2

线程池的初始化

82 5.3.3

添加连接到线程池

84 5.3.4

worker线程

85 5.3.5

get_event函数

86 5.3.6

listener线程

89 5.3.7

timer线程

92 5.4

小结

94 第6章

二进制日志binlog

95 6.1

简介

95 6.1.1

binlog的作用

96 6.1.2

index文件

96 6.2

binlog的使用

97 6.2.1

开启binlog

97 6.2.2

选择binlog的格式

97 6.2.3

binlog的相关参数

98 6.3

binlog事件

99 6.3.1

binlog事件格式

99 6.3.2

binlog事件类型

101 6.3.3

binlog事件的实现

108 6.4

清理binlog

109 6.4.1

手动清理binlog

109 6.4.2

自动清理binlog

109 6.4.3

purge命令的实现

109 6.5

binlog_cache_mngr结构

112 6.6

mysqlbinlog工具

112 6.7

使用binlog进行恢复

113 6.8

小结

113 第7章

binlog group commit技术

115 7.1

事务的两阶段提交

115 7.2

binlog group commit的工作原理

117 7.3

binlog group commit的实现

118 7.3.1

相关的数据结构

118 7.3.2

代码执行流程

120 7.3.3

事务排队

125 7.3.4

leader线程的工作

128 7.3.5

prepare_ordered和commit_ordered接口

134 7.4

小结

135 第8章

复制

136 8.1

简介

136 8.2

复制的作用

137 8.3

复制的工作原理

138 8.3.1

概要

138 8.3.2

relay-log

140 8.3.3

master.info文件和relay-log.info文件

140 8.4

复制的配置

141 8.4.1

在新安装的主库和从库上配置复制

141 8.4.2

主库有一定数据时的复制配置

144 8.4.3

选择性复制

150 8.5

复制的实现

151 8.5.1

复制相关的数据结构

152 8.5.2

复制的初始化——init_slave函数

157 8.5.3

CHANGE MASTER TO命令——准备工作

159 8.5.4

START SLAVE命令——开启复制

160 8.5.5

STOP SLAVE命令——停止复制

160 8.5.6

slave IO线程

161 8.5.7

slave SQL线程

164 8.5.8

master dump线程

165 8.6

半同步复制

168 8.6.1

半同步复制的工作原理

168 8.6.2

半同步的安装和配置

169 8.6.3

半同步复制的实现

171 8.6.4

半同步复制的变种

179 8.6.5

半同步复制的潜在问题

180 8.7

并行复制

181 8.7.1

MySQL的并行复制

181 8.7.2

MariaDB的并行复制

181 8.8

多源复制

182 8.8.1

多源复制的应用场景

182 8.8.2

多源复制相关的命令

183 8.8.3

MariaDB多源复制的实现

184 8.9

GTID

185 8.9.1

GTID的概念

186 8.9.2

在MySQL上配置基于GTID的复制

186 8.9.3

MySQL中GTID的实现

187 8.9.4

MariaDB中的GTID

195 8.10

小结

195 第9章

数据结构和算法

197 9.1

算法复杂度

197 9.2

B+树和索引

198 9.2.1

磁盘的读取

198 9.2.2

B+树

199 9.2.3

数据库索引

200 9.3

堆排序与快速排序

201 9.3.1

堆——优先级队列

201 9.3.2

堆排序

202 9.3.3

快速排序——qsort

203 9.4

ORDER BY的实现

204 9.4.1

使用索引的已有顺序

205 9.4.2

filesort算法

207 9.5

JOIN的实现

210 9.5.1

JOIN语句的使用

211 9.5.2

Nest Loop Join算法

212 9.5.3

Block Nest Loop Join算法

214 9.5.4

Batched Key Access Join算法

216 9.5.5

Hash Join算法

216 9.5.6

Sort Merge Join算法

217 9.6

小结

218 第10章

分布式数据库

219 10.1

分布式数据库概要

219 10.1.1

分布式数据库的特点

219 10.1.2

系统的扩展方式

220 10.1.3

分布式数据库中的技术难点

221 10.2

数据的分片方式

221 10.3

分布式数据库实践——京东分布式数据库系统

222 10.3.1

京东分布式数据库系统架构

222 10.3.2

高可用组的初始化

223 10.3.3

数据的分片

224 10.3.4

系统的高可用性

225 10.3.5

系统的可扩展性

227 10.4

小结

230 附录A

数据库与IO资源控制