Blue Flower

mariadb原理与实现2015年3月由人民邮电出版社出版发行,是一本讲解数据库原理及其具体实现的书。mariadb不仅免费开源,而且支持一些新特性,如多源复制,线程池等。另外Google以及从MySQL迁移到了mariadb。知识兔小编推荐的这本MariaDB原理与实现由浅入深地剖析了MariaDB,首先简要介绍了一些基础知识、新特性、对MySQL原有功能所做的扩展以及源代码,接着介绍了底层数据结构、线程池技术、binlog、复制等内容,结尾介绍了分布式数据库系统。知识兔小编分享的这本书主要面向想了解mariadb/MySQL的工作原理及具体实现的读者,以及想要阅读mariadb/MySQL源代码却苦于不知道从何处开始的读者。
mariadb原理与实现

作者简介:

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

mariadb原理与实现目录:

知识兔第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 编译和安装MariaDB8
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 调试MariaDB34
3.3.1 准备工作34
3.3.2 mysqld关键的函数调用37
3.3.3 调试38
3.4 小结 40
第4章 MariaDB基础数据结构41
4.1 内存池MEM_ROOT41
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_CACHE52
4.2.1 高性能武器——缓存53
4.2.2 IO_CACHE的定义54
4.2.3 IO_CACHE的使用57
4.3 NET结构63
4.4 线程上下文——THD65
4.5 TABLE_SHARE69
4.6 TABLE73
4.7 小结76
第5章 MariaDB线程池775.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章 二进制日志binlog95
6.1 简介 95
6.1.1 binlog的作用96
6.1.2 index文件96
6.2 binlog的使用97
6.2.1 开启binlog97
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 清理binlog109
6.4.1 手动清理binlog109
6.4.2 自动清理binlog109
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-log140
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 GTID185
8.9.1 GTID的概念186
8.9.2 在MySQL上配置基于GTID的复制186
8.9.3 MySQL中GTID的实现187
8.9.4 MariaDB中的GTID195
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 快速排序——qsort203
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资源控制231
202210300356049249460001

前言/序言:

知识兔自从60多年前关系型数据库出现起,它就被广泛使用。至今,几乎所有IT系统都离不开关系型数据库。在MySQL出现前,关系型数据库行业几乎被Oracle、IBM.DB2和Microsoft.SQL.Server几个商业巨头垄断了。商业数据库的封闭性和高昂的价格,对IT行业在深度和广度上的使用、提升数据库系统以及时适应各种新需求(尤其是互联网等行业带来的新需求)造成了很大的阻碍。20世纪末开源数据库MySQL的出现和崛起,为整个数据库行业带来了巨大的希望。可惜随着MySQL被Oracle公司收购,存在Oracle公司将MySQL闭源的巨大潜在风险。为了避免这种风险,为行业分享一个永久开源免费的关系型数据库系统,MariaDB被创造了出来。虽然MariaDB最初只是MySQL的一个分支,但近年来随着社区的壮大和普及度的迅猛上升,它在很多方面已经超过了MySQL,例如性能、复制功能和存储引擎等,并且大有完全替代MySQL的势头。
本书深入浅出地阐述了MariaDB的设计理念,剖析了MariaDB的几个关键而有趣的子系统。本书的作者是我的同事,我目睹了他们将日常工作实践中总结和提炼出MariaDB的心得转化成书的过程。这是一本理论结合实践的书,读者不但可以学习到MariaDB的理论,还可以参照书中的实例一步步地自行调试实践。我相信本书会对有志学习MariaDB的读者有所帮助。
作为一个曾经在数据库行业耕耘8年的老兵(主要从事SQL.Server存储引擎研发),我也深深地期待国人不但能深度掌握MariaDB的使用技术,还能在MariaDB社区作出越来越多的贡献,为积累和提升数据库方面的核心能力而努力。期待这本书能启发和引导更多的同行来参与MariaDB社区的工作并发挥出价值。
何刚,京东集团技术副总裁

下载说明:

知识兔方法一:
1、下载并解压,得出pdf文件
2、如果打不开本文件,别着急,这时候请务必在知识兔选择一款阅读器下载哦
3、安装后,再打开解压得出的pdf文件
4、以上都完成后,接下来双击进行阅读就可以啦,朋友们开启你们的阅读之旅吧。
方法二:
1、可以在手机里下载知识兔中的阅读器和百度网盘
2、接下来直接将pdf传输到百度网盘
3、用阅读器打开即可阅读

免责声明:

知识兔来源于网络,仅用于分享知识,学习和交流!请下载完在24小时内删除。
禁用于商业用途!如果您喜欢《mariadb原理与实现》,请购买正版,谢谢合作。
爱学习,请到知识兔查找资源自行下载!

下载体验

请输入密码查看内容!

如何获取密码?

 

点击下载