MariaDB原理与实现
2020-03-19 18:58:45 0 举报
AI智能生成
MariaDB原理与实现
作者其他创作
大纲/内容
5 MariaDB线程池
5.1 线程池相关的参数
5.1.1 MariaDB 5.1和MariaDB 5.3中的线程池
5.1.2 MariaDB 5.5和MariaDB 10.0中的线程池
5.2 何时使用线程池
5.3 线程池的实现
5.3.1 线程池相关的数据结构
5.3.2 线程池的初始化
5.3.3 添加连接到线程池
5.3.4 worker线程
5.3.5 get_event函数
5.3.6 listener线程
5.3.7 timer线程
5.4 小结
6 二进制日志binlog
6.1 简介
6.1.1 binlog的作用
6.1.2 index文件
6.2 binlog的使用
6.2.1 开启binlog
6.2.2 选择binlog的格式
6.2.3 binlog的相关参数
6.3 binlog事件
6.3.1 binlog事件格式
6.3.2 binlog事件类型
6.3.3 binlog事件的实现
6.4 清理binlog
6.4.1 手动清理binlog
6.4.2 自动清理binlog
6.4.3 purge命令的实现
6.5 binlog_cache_mngr结构
6.6 mysqlbinlog工具
6.7 使用binlog进行恢复
6.8 小结
7 binlog group commit技术
7.1 事务的两阶段提交
7.2 binlog group commit的工作原理
7.3 binlog group commit的实现
7.3.1 相关的数据结构
7.3.2 代码执行流程
7.3.3 事务排队
7.3.4 leader线程的工作
7.3.5 prepare_ordered和commit_ordered接口
7.4 小结
8 复制
8.1 简介
8.2 复制的作用
8.3 复制的工作原理
8.3.1 概要
8.3.2 relay-log
8.3.3 master.info文件和relay-log.info文件
8.4 复制的配置
8.4.1 在新安装的主库和从库上配置复制
8.4.2 主库有一定数据时的复制配置
8.4.3 选择性复制
8.5 复制的实现
8.5.1 复制相关的数据结构
8.5.2 复制的初始化——init_slave函数
8.5.3 CHANGE MASTER TO命令——准备工作
8.5.4 START SLAVE命令——开启复制
8.5.5 STOP SLAVE命令——停止复制
8.5.6 slave IO线程
8.5.7 slave SQL线程
8.5.8 master dump线程
8.6 半同步复制
8.6.1 半同步复制的工作原理
8.6.2 半同步的安装和配置
8.6.3 半同步复制的实现
8.6.4 半同步复制的变种
8.6.5 半同步复制的潜在问题
8.7 并行复制
8.7.1 MySQL的并行复制
8.7.2 MariaDB的并行复制
8.8 多源复制
8.8.1 多源复制的应用场景
8.8.2 多源复制相关的命令
8.8.3 MariaDB多源复制的实现
8.9 GTID
8.9.1 GTID的概念
8.9.2 在MySQL上配置基于GTID的复制
8.9.3 MySQL中GTID的实现
8.9.4 MariaDB中的GTID
8.10 小结
9 数据结构和算法
9.1 算法复杂度
9.2 B+树和索引
9.2.1 磁盘的读取
9.2.2 B+树
9.2.3 数据库索引
9.3 堆排序与快速排序
9.3.1 堆——优先级队列
9.3.2 堆排序
9.3.3 快速排序——qsort
9.4 ORDER BY的实现
9.4.1 使用索引的已有顺序
9.4.2 filesort算法
9.5 JOIN的实现
9.5.1 JOIN语句的使用
9.5.2 Nest Loop Join算法
9.5.3 Block Nest Loop Join算法
9.5.4 Batched Key Access Join算法
9.5.5 Hash Join算法
9.5.6 Sort Merge Join算法
9.6 小结
10 分布式数据库
10.1 分布式数据库概要
10.1.1 分布式数据库的特点
10.1.2 系统的扩展方式
10.1.3 分布式数据库中的技术难点
10.2 数据的分片方式
10.3 分布式数据库实践——京东分布式数据库系统
10.3.1 京东分布式数据库系统架构
10.3.2 高可用组的初始化
10.3.3 数据的分片
10.3.4 系统的高可用性
10.3.5 系统的可扩展性
10.4 小结
附录 A 数据库与IO资源控制
A.1 数据库资源控制方案简介
A.1.1 基于应用层的资源控制
A.1.2 基于OS层的资源控制
A.2 CGroup的基本使用
A.2.1 内核选项检查及编译
A.2.2 CGroup的操作方法
A.2.3 使用CGroup限制进程CPU使用带宽
A.2.4 使用CGroup限制进程的内存使用
A.2.5 使用CGroup限制磁盘带宽使用
A.2.6 通过限流方式控制IO资源的使用
A.3 CGroup框架实现
A.3.1 核心数据结构
A.3.2 CGroup子系统初始化过程
A.3.3 CGroup文件系统的挂载实现
A.3.4 Cgroup block子系统IO限流实现
目标读者
章节安排
联系作者
1 MariaDB概述
1.1 MariaDB的历史
1.2 MariaDB所做的事情
1.2.1 更丰富的存储引擎
1.2.2 性能的提升
1.2.3 扩展和新特性
1.2.4 更好的测试
1.2.5 尽量消除错误和警告
1.3 MariaDB的版本与兼容性
1.3.1 MariaDB 5.1和MySQL 5.1的不兼容性
1.3.2 MariaDB 5.2和MySQL 5.1的不兼容性
1.3.3 MariaDB 5.3和MySQL 5.1、MariaDB 5.2的不兼容性
1.3.4 MariaDB 5.5和MariaDB 5.3的不兼容性
1.3.5 MariaDB 5.5与MariaDB 5.3和MySQL 5.5的不兼容性
1.3.6 MariaDB 10.0和MySQL 5.6的不兼容性
1.4 编译和安装MariaDB
1.4.1 使用二进制安装包进行安装
1.4.2 使用源代码进行编译安装
1.5 联系社区
1.6 小结
2 MariaDB的扩展和新特性
2.1 更多的存储引擎
2.1.1 全新的Aria存储引擎
2.1.2 XtraDB存储引擎
2.1.3 SphinxSE存储引擎
2.1.4 FederatedX存储引擎
2.1.5 TokuDB存储引擎
2.1.6 Cassandra存储引擎
2.1.7 CONNECT存储引擎
2.1.8 Sequence存储引擎
2.1.9 Spider存储引擎
2.2 线程池技术和binlog group commit技术
2.2.1 线程池技术
2.2.2 binlog group commit技术
2.3 MariaDB其他扩展和新特性
2.3.1 更高的时间精度
2.3.2 虚拟列
2.3.3 用户统计功能
2.3.4 KILL命令的扩展
2.3.5 命令执行进度报告
2.3.6 动态列
2.3.7 多源复制
2.4 小结
3 初识MariaDB源代码
3.1 MariaDB源代码的目录组织结构
3.2 MariaDB对类型和函数的封装
3.2.1 对类型的封装
3.2.2 对函数的封装
3.3 调试MariaDB
3.3.1 准备工作
3.3.2 mysqld关键的函数调用
3.3.3 调试
3.4 小结
4 MariaDB基础数据结构
4.1 内存池MEM_ROOT
4.1.1 内存碎片问题
4.1.2 MEM_ROOT的定义
4.1.3 MEM_ROOT的使用
4.1.4 MEM_ROOT的初始化
4.1.5 分配内存
4.1.6 内存回收
4.1.7 MEM_ROOT的使用场景
4.2 文件缓存IO_CACHE
4.2.1 高性能武器——缓存
4.2.2 IO_CACHE的定义
4.2.3 IO_CACHE的使用
4.3 NET结构
4.4 线程上下文——THD
4.5 TABLE_SHARE
4.6 TABLE
4.7 小结
0 条评论
下一页