《深入理解MariaDB与MySQL》讲解了MariaDB的诞生背景及设计目的,并通过与MySQL的比较使读者轻松理解MariaDB。本书内容涉及MariaDB 5.1~10.0的各个方面,讲解重点在于MariaDB 10.0的各种实用功能。此外,MariaDB与MySQL有着紧密的联系,书中对MariaDB 10.0与MySQL 5.6的新功能进行了比较,读者可以同时学习MariaDB与MySQL的内容。
第1章 MariaDB 1
1.1 MariaDB.2
1.2 MariaDB 与MySQL.3
1.2.1 MariaDB、MySQL 和PerconaServer3
1.2.2 相同点6
1.2.3 不同点7
1.2.4 各版本间的兼容性 10
1.2.5 性能比较. 11
1.2.6 MariaDB 是否会取代MySQL 14
1.2.7 MariaDB 与MySQL 的选择. 14
第2章 安装 17
2.1 下载 18
2.2 安装 20
2.2.1 在Windows 操作系统下安装MariaDB 21
2.2.2 在Linux 操作系统下安装MariaDB 27
2.3 更新 28
2.3.1 从MySQL 升级到MariaDB 时的注意事项 28
2.3.2 不受版本限制的安全升级法 29
2.3.3 从MySQL 5.0 或之前版本升级为MariaDB 5.5 30
2.3.4 从MySQL 5.1 升级为MariaDB 5.5 31
2.3.5 从MySQL 5.5 升级为MariaDB 5.5 32
第3章 MariaDB启动及执行查询 33
3.1 启动与终止服务器 34
3.1.1 在Linux 中启动与终止MariaDB 服务器 34
3.1.2 在Windows 系统中启动与终止MariaDB 服务器 36
?3.2 登录服务器 37
3.2.1 登录服务器与版本确认. 37
3.2.2 mysql 客户端程序支持的选项 39
3.3 创建数据库与用户 41
3.3.1 MariaDB 用户账户识别与权限 41
3.3.2 MariaDB 默认用户. 47
3.3.3 MariaDB 的默认数据库. 48
3.3.4 新建数据库. 50
3.3.5 创建用户. 50
3.4 创建与修改数据表 51
3.4.1 创建数据表. 52
3.4.2 修改数据表(在线与离线). 53
3.4.3 删除数据表. 66
3.5 数据操作 . 67
3.5.1 INSERT. 67
3.5.2 SELECT 68
3.5.3 UPDATE. 70
3.5.4 REPLACE 71
3.5.5 DELETE 71
第4章 执行计划分析 73
4.1 概要 . 74
4.1.1 查询执行过程 74
4.1.2 优化器种类. 75
4.1.3 统计信息. 76
4.1.4 直方图统计信息 82
4.1.5 连接优化器选项 87
4.2 准备示例数据. 92
4.2.1 加载示例数据 92
4.2.2 收集统计信息 94
4.3 执行计划分析. 96
4.3.1 id 列 97
4.3.2 select_type 列. 98
4.3.3 table 列 106
4.3.4 type 列. 108
4.3.5 possible_keys 列 117
4.3.6 key 列 117
4.3.7 key_len 列 117
4.3.8 ref 列 119
4.3.9 rows 列 120
4.3.10 Extra 列 121
4.3.11 EXPLAIN EXTENDED(Filtered 列) 149
4.3.12 EXPLAIN EXTENDED(附加优化器信息) 150
4.3.13 EXPLAIN PARTITIONS(Partitions 列) 151
4.4 优化器提示 . 152
4.4.1 提示的使用方法 152
4.4.2 STRAIGHT_JOIN 153
4.4.3 USE INDEX/FORCE INDEX/IGNORE INDEX 156
4.4.4 SQL_CACHE/SQL_NO_CACHE 157
4.4.5 SQL_CALC_FOUND_ROWS 158
4.4.6 其他提示. 160
4.5 分析执行计划时的注意事项 160
4.5.1 Select_type 列中需要注意的项目 160
4.5.2 Type 列中需要注意的项目. 161
4.5.3 Key 列中需要注意的项目. 161
4.5.4 Rows 列中需要注意的项目 161
4.5.5 Extra 列中需要注意的项目 161
第5章 优化 163
5.1 全表扫描 . 164
5.2 ORDER BY 处理(Using filesort) 165
5.2.1 排序缓冲. 165
5.2.2 排序算法. 167
5.2.3 排序处理方式 169
5.2.4 ORDER BYLIMIT n 优化 177
5.2.5 与排序相关的状态变量. 178
5.3 GROUP BY 处理 179
5.3.1 使用索引扫描处理GROUP BY(紧凑索引扫描) 179
5.3.2 使用松散索引扫描处理GROUP BY 179
5.3.3 使用临时表处理GROUP BY 181
5.4 DISTINCT 处理 182
5.4.1 SELECT DISTINCT 182
5.4.2 DISTINCT 用于集合函数内部. 183
5.5 临时表(Using temporary) 184
5.5.1 需要使用临时表的查询. 185
5.5.2 在磁盘上创建临时表(使用Aria 存储引擎) 185
5.5.3 与临时表有关的状态变量. 186
5.5.4 带索引的内部临时表. 187
5.5.5 内部临时表的注意事项. 187
5.6 索引条件下推 188
5.7 多范围读 . 191
5.7.1 基于RowId 排序(Rowid-orderd scan) 192
5.7.2 基于Key 排序(Key-ordered scan) 194
5.7.3 基于Key 与RowId 排序(Key-ordered、Rowid-ordered scan) 195
5.7.4 “多范围读”优化与排序. 197
5.7.5 “多范围读”优化的注意事项 198
5.8 索引合并 . 199
5.8.1 Using union 201
5.8.2 Using sort_union 202
5.8.3 Using intersect 204
5.8.4 Using sort_intersect 205
5.9 数据表连接 . 205
5.9.1 连接类型. 206
5.9.2 连接算法. 212
5.9.3 连接的注意事项 222
5.10 子查询 . 224
5.10.1 半连接子查询优化. 224
5.10.2 非半连接的子查询优化. 236
5.10.3 子查询缓存 238
第6章 存储引擎 241
6.1 Aria 存储引擎 . 242
6.1.1 事务 242
6.1.2 页面缓存. 243
6.1.3 系统变量设置 243
6.2 XtraDB 存储引擎 . 244
InnoDB 与XtraDB 存储引擎替换 245
6.3 InnoDB 存储引擎 247
6.3.1 MySQL 5.6 InnoDB. 247
6.3.2 “脏页”刷新. 262
6.3.3 缓冲池性能改善 279
6.3.4 原子写(针对FusionIO SSD 的Atomic write) 283
6.3.5 扩展的InnoDB 引擎状态输出 284
6.3.6 XtraDB 重做日志存档. 288
6.3.7 跟踪修改页面 . 289
6.4 全文检索引擎 290
6.4.1 添加全文检索索引 290
6.4.2 全文检索索引表空间. 292
6.4.3 与全文检索索引相关的INFORMATION_SCHEMA 信息 294
6.4.4 使用全文检索索引 295
6.4.5 注意事项. 295
6.5 Memcached 插件 298
6.5.1 架构 298
6.5.2 安装与测试. 299
6.5.3 缓存策略. 303
6.5.4 注册用户数据表 304
6.5.5 相关系统变量 305
6.6 Cassandra 存储引擎 306
6.6.1 Cassandra. 307
6.6.2 Cassandra 存储引擎. 309
6.7 CONNECT 存储引擎 311
6.7.1 安装CONNECT 存储引擎. 311
6.7.2 连接Oracle RDBMS 数据表. 312
6.7.3 连接my.cnf 设置文件. 313
6.7.4 连接操作系统目录 314
6.8 Sequence 存储引擎 . 315
6.8.1 Sequence 存储引擎的基本用法 315
6.8.2 查找遗漏的编号 317
6.8.3 创建顺序组合的号码对. 318
6.8.4 查找倍数或公倍数 318
6.8.5 顺序生成字母表 319
6.8.6 顺序生成日期 320
6.8.7 数据复制加工 320
6.9 Mroonga 全文检索存储引擎 321
6.9.1 索引算法. 322
6.9.2 安装Mroonga 全文检索引擎. 324
6.9.3 使用Mroonga 全文检索引擎. 325
第7章 其他功能 329
7.1 性能提升 330
7.1.1 线程池. 330
7.2 管理与诊断 335
7.2.1 SHOW EXPLAIN FOR