小苏子
小苏子PDF在线图书

MariaDB原理与实现 内容简介

MariaDB原理与实现 内容简介

MariaDB原理与实现 目录

MariaDB原理与实现 精彩文摘

《MariaDB原理与实现》由浅入深地剖析了MariaDB,首先简要介绍了一些基础知识、新特性、对MySQL原有功能所做的扩展以及源代码,接着介绍了底层数据结构、线程池技术、binlog、复制等内容,结尾介绍了分布式数据库系统。第1章 MariaDB概述  11.1 MariaDB的历史  11.2 MariaDB所做的事情  21.2.1 更丰富的存储引擎  21.2.2 性能的提升  21.2.3 扩展和新特性  31.2.4 更好的测试  31.2.5 尽量消除错误和警告  41.3 MariaDB的版本与兼容性  41.3.1 MariaDB 5.1和MySQL 5.1的不兼容性  41.3.2 MariaDB 5.2和MySQL 5.1的不兼容性  51.3.3 MariaDB 5.3和MySQL 5.1、MariaDB 5.2的不兼容性  51.3.4 MariaDB 5.5和MariaDB 5.3的不兼容性  61.3.5 MariaDB 5.5与MariaDB 5.3和MySQL 5.5 的不兼容性  71.3.6 MariaDB 10.0和MySQL 5.6的不兼容性  71.4 编译和安装MariaDB  81.4.1 使用二进制安装包进行安装  81.4.2 使用源代码进行编译安装  91.5 联系社区  111.6 小结  12第2章 MariaDB的扩展和新特性  132.1 更多的存储引擎  132.1.1 全新的Aria存储引擎  132.1.2 XtraDB存储引擎  162.1.3 SphinxSE存储引擎  172.1.4 FederatedX存储引擎  172.1.5 TokuDB存储引擎  182.1.6 Cassandra存储引擎  182.1.7 CONNECT存储引擎  182.1.8 Sequence存储引擎  192.1.9 Spider存储引擎  202.2 线程池技术和binlog group commit技术  222.2.1 线程池技术  222.2.2 binlog group commit技术  232.3 MariaDB其他扩展和新特性  232.3.1 更高的时间精度  232.3.2 虚拟列  242.3.3 用户统计功能  252.3.4 KILL命令的扩展  272.3.5 命令执行进度报告  272.3.6 动态列  282.3.7 多源复制  292.4 小结  29第3章 初识MariaDB源代码  313.1 MariaDB源代码的目录组织结构  313.2 MariaDB对类型和函数的封装  333.2.1 对类型的封装  333.2.2 对函数的封装  333.3 调试MariaDB  343.3.1 准备工作  343.3.2 mysqld关键的函数调用  373.3.3 调试  383.4 小结  40第4章 MariaDB基础数据结构  414.1 内存池MEM_ROOT  414.1.1 内存碎片问题  424.1.2 MEM_ROOT的定义  444.1.3 MEM_ROOT的使用  464.1.4 MEM_ROOT的初始化  474.1.5 分配内存  484.1.6 内存回收  504.1.7 MEM_ROOT的使用场景  524.2 文件缓存IO_CACHE  524.2.1 高性能武器——缓存  534.2.2 IO_CACHE的定义  544.2.3 IO_CACHE的使用  574.3 NET结构  634.4 线程上下文——THD  654.5 TABLE_SHARE  694.6 TABLE  734.7 小结  76第5章 MariaDB线程池  775.1 线程池相关的参数  775.1.1 MariaDB 5.1和MariaDB 5.3中的线程池  775.1.2 MariaDB 5.5和MariaDB 10.0中的线程池  785.2 何时使用线程池  795.3 线程池的实现  795.3.1 线程池相关的数据结构  805.3.2 线程池的初始化  825.3.3 添加连接到线程池  845.3.4 worker线程  855.3.5 get_event函数  865.3.6 listener线程  895.3.7 timer线程  925.4 小结  94第6章 二进制日志binlog  956.1 简介  956.1.1 binlog的作用  966.1.2 index文件  966.2 binlog的使用  976.2.1 开启binlog  976.2.2 选择binlog的格式  976.2.3 binlog的相关参数  986.3 binlog事件  996.3.1 binlog事件格式  996.3.2 binlog事件类型  1016.3.3 binlog事件的实现  1086.4 清理binlog  1096.4.1 手动清理binlog  1096.4.2 自动清理binlog  1096.4.3 purge命令的实现  1096.5 binlog_cache_mngr结构  1126.6 mysqlbinlog工具  1126.7 使用binlog进行恢复  1136.8 小结  113第7章 binlog group commit技术  1157.1 事务的两阶段提交  1157.2 binlog group commit的工作原理  1177.3 binlog group commit的实现  1187.3.1 相关的数据结构  1187.3.2 代码执行流程  1207.3.3 事务排队  1257.3.4 leader线程的工作  1287.3.5 prepare_ordered和commit_ordered接口  1347.4 小结  135第8章 复制  1368.1 简介  1368.2 复制的作用  1378.3 复制的工作原理  1388.3.1 概要  1388.3.2 relay-log  1408.3.3 master.info文件和relay-log.info文件  1408.4 复制的配置  1418.4.1 在新安装的主库和从库上配置复制  1418.4.2 主库有一定数据时的复制配置  1448.4.3 选择性复制  1508.5 复制的实现  1518.5.1 复制相关的数据结构  1528.5.2 复制的初始化——init_slave函数  1578.5.3 CHANGE MASTER TO命令——准备工作  1598.5.4 START SLAVE命令——开启复制  1608.5.5 STOP SLAVE命令——停止复制  1608.5.6 slave IO线程  1618.5.7 slave SQL线程  1648.5.8 master dump线程  1658.6 半同步复制  1688.6.1 半同步复制的工作原理  1688.6.2 半同步的安装和配置  1698.6.3 半同步复制的实现  1718.6.4 半同步复制的变种  1798.6.5 半同步复制的潜在问题  1808.7 并行复制  1818.7.1 MySQL的并行复制  1818.7.2 MariaDB的并行复制  1818.8 多源复制  1828.8.1 多源复制的应用场景  1828.8.2 多源复制相关的命令  1838.8.3 MariaDB多源复制的实现  1848.9 GTID  1858.9.1 GTID的概念  1868.9.2 在MySQL上配置基于GTID的复制  1868.9.3 MySQL中GTID的实现  1878.9.4 MariaDB中的GTID  1958.10 小结  195第9章 数据结构和算法  1979.1 算法复杂度  1979.2 B+树和索引  1989.2.1 磁盘的读取  1989.2.2 B+树  1999.2.3 数据库索引  2009.3 堆排序与快速排序  2019.3.1 堆——优先级队列  2019.3.2 堆排序  2029.3.3 快速排序——qsort  2039.4 ORDER BY的实现  2049.4.1 使用索引的已有顺序  2059.4.2 filesort算法  2079.5 JOIN的实现  2109.5.1 JOIN语句的使用  2119.5.2 Nest Loop Join算法  2129.5.3 Block Nest Loop Join算法  2149.5.4 Batched Key Access Join算法  2169.5.5 Hash Join算法  2169.5.6 Sort Merge Join算法  2179.6 小结  218第10章 分布式数据库  21910.1 分布式数据库概要  21910.1.1 分布式数据库的特点  21910.1.2 系统的扩展方式  22010.1.3 分布式数据库中的技术难点  22110.2 数据的分片方式  22110.3 分布式数据库实践——京东分布式数据库系统  22210.3.1 京东分布式数据库系统架构  22210.3.2 高可用组的初始化  22310.3.3 数据的分片  22410.3.4 系统的高可用性  22510.3.5 系统的可扩展性  22710.4 小结  230附录A 数据库与IO资源控制  2312008年MySQL首先被Sun公司收购,之后Sun公司又被Oracle公司收购,MySQL也被包含在这次收购中。在这两次收购过程中,出现了多个MySQL的开源分支,其中比较主流的分支有Percona Server、MariaDB和Drizzle等。它们都有活跃的用户社区和一定程度上的商业支持,均由独立的服务供应商支持。MariaDB是众多MySQL开源分支中非常出色的一个。作为MySQL的深度替代者,MariaDB很好地兼容了MySQL。同时,MariaDB在MySQL的基础上做了很多扩展,包含了许多新特性,例如支持binlog group commit技术,支持虚拟列和动态列,支持多源复制,等等。在性能方面,MariaDB也做了很多优化,例如更快的子查询、更快的字符集转换、为MyISAM存储引擎添加了分段键值缓存,让MyISAM存储引擎在现代硬件体系上运行得更快,等等。本章中,我们将介绍MariaDB的一些基本信息。本章的内容主要包括:MariaDB的历史MariaDB所做的事情MariaDB的版本与兼容性编译和安装MariaDB联系社区在Sun收购MySQL之后,MySQL的创始人Monty Widenius离开了Sun公司,成立了Monty程序公司,创立了MariaDB,其主要目的是建立一个开放的开发环境,以鼓励外部人员参与。目前,MariaDB主要由社区开发和维护。MariaDB对社区、开发者及用户的主要意义可以概括为以下几个方面:是一个永久开源的MySQL分支;高质量和持续性的开发测试及维护工作;来自社区开发者提交的补丁会被确认、接收和使用;维护MariaDB整个社区开发者的话语权,不会被某一个人或者组织完全控制;持续保持和MySQL的兼容性。MariaDB在MySQL的基础上做了许多工作,主要包括性能方面的优化以及许多新特性的支持。除了包含标准的MyISAM、BLACKHOLE、CSV、MEMORY、ARCHIVE、MERGE等存储引擎外,MariaDB的源代码和二进制包中还包含以下额外的存储引擎:AriaXtraDBPBXTFederatedXOQGraphSphinxSEIBMDB2ITokuDBCassandraCONNECTSequenceSpiderMariaDB在很多地方都做了优化,其性能得到了不同程度的提升。MariaDB所做的优化主要包括以下几个方面。对子查询进行了优化,使子查询的速度得到了提升。更快、更安全的复制,引入了binlog group commit技术,使MariaDB在某些场景下事务的提交速度得到成倍提升。提升了在Windows平台下InnoDB异步IO子系统的性能。提高了MEMORY存储引擎索引的插入速度。为MyISAM存储引擎增加了分段键值缓存,提升了MyISAM存储引擎在现代硬件上的运行速度。表的校验更加快速。提升了字符集的转换效率。引入了线程池技术,解决了MySQL的最大连接数限制问题,降低了大量连接情况下的系统开销。使用Aria存储引擎的表作为临时表,提升了某些复杂查询的效率。

赞(0)
未经允许不得转载:小苏子图书 » MariaDB原理与实现 内容简介