深入理解MariaDB与MySQL pdf

图书网 2018年9月7日09:08:131 2.8K

《深入理解MariaDB与MySQL》特色

MariaDB与MySQL间的兼容性

MariaDB的安装与迁移

在线修改Schema

执行计划分析

MariaDB 10.0与MySQL 5.6的优化

MariaDB的存储引擎

MariaDB的附加功能(线程池及管理诊断工具)

XtraBackup备份工具

MariaDB 10与MySQL 5.6的复制(GTID、多源复制及多线程从服务器)

深入理解MariaDB与MySQL 内容简介

深入理解MariaDB与MySQL》讲解了MariaDB的诞生背景及设计目的,并通过与MySQL的比较使读者轻松理解MariaDB。本书内容涉及MariaDB 5.1~10.0的各个方面,讲解重点在于MariaDB 10.0的各种实用功能。此外,MariaDB与MySQL有着紧密的联系,书中对MariaDB 10.0与MySQL 5.6的新功能进行了比较,读者可以同时学习MariaDB与MySQL的内容。

深入理解MariaDB与MySQL 目录

第1章 MariaDB

1.1 MariaDB

1.2 MariaDB与MySQL

1.2.1 MariaDB、MySQL和PerconaServer

1.2.2 相同点

1.2.3 不同点

1.2.4 各版本间的兼容性

1.2.5 性能比较

1.2.6 MariaDB是否会取代MySQL

1.2.7 MariaDB与MySQL的选择

第2章 安装

2.1 下载

2.2 安装

2.2.1 在Windows操作系统下安装MariaDB

2.2.2 在Linux操作系统下安装MariaDB

2.3 更新

2.3.1 从MySQL升级到MariaDB时的注意事项

2.3.2 不受版本限制的安全升级法

2.3.3 从MySQL 5.0或之前版本升级为MariaDB 5.5

2.3.4 从MySQL 5.1升级为MariaDB 5.5

2.3.5 从MySQL 5.5升级为MariaDB 5.5

第3章 MariaDB启动及执行查询

3.1 启动与终止服务器

3.1.1 在Linux中启动与终止MariaDB服务器

3.1.2 在Windows系统中启动与终止MariaDB服务器

3.2 登录服务器

3.2.1 登录服务器与版本确认

3.2.2 mysql客户端程序支持的选项

3.3 创建数据库与用户

3.3.1 MariaDB用户账户识别与权限

3.3.2 MariaDB默认用户

3.3.3 MariaDB的默认数据库

3.3.4 新建数据库

3.3.5 创建用户

3.4 创建与修改数据表

3.4.1 创建数据表

3.4.2 修改数据表(在线与离线)

3.4.3 删除数据表

3.5 数据操作

3.5.1 INSERT

3.5.2 SELECT

3.5.3 UPDATE

3.5.4 REPLACE

3.5.5 DELETE

第4章 执行计划分析

4.1 概要

4.1.1 查询执行过程

4.1.2 优化器种类

4.1.3 统计信息

4.1.4 直方图统计信息

4.1.5 连接优化器选项

4.2 准备示例数据

4.2.1 加载示例数据

4.2.2 收集统计信息

4.3 执行计划分析

4.3.1 id列

4.3.2 select_type列

4.3.3 table列

4.3.4 type列

4.3.5 possible_keys列

4.3.6 key列

4.3.7 key_len列

4.3.8 ref列

4.3.9 rows列

4.3.10 Extra列

4.3.11 EXPLAIN EXTENDED(Filtered列)

4.3.12 EXPLAIN EXTENDED(附加优化器信息)

4.3.13 EXPLAIN PARTITIONS(Partitions列)

4.4 优化器提示

4.4.1 提示的使用方法

4.4.2 STRAIGHT_JOIN

4.4.3 USE INDEX/FORCE INDEX/IGNORE INDEX

4.4.4 SQL_CACHE/SQL_NO_CACHE

4.4.5 SQL_CALC_FOUND_ROWS

4.4.6 其他提示

4.5 分析执行计划时的注意事项

4.5.1 Select_type列中需要注意的项目

4.5.2 Type列中需要注意的项目

4.5.3 Key列中需要注意的项目

4.5.4 Rows列中需要注意的项目

4.5.5 Extra列中需要注意的项目

第5章 优化

5.1 全表扫描

5.2 ORDER BY处理(Using filesort)

5.2.1 排序缓冲

5.2.2 排序算法

5.2.3 排序处理方式

5.2.4 ORDER BY..LIMIT n优化

5.2.5 与排序相关的状态变量

5.3 GROUP BY处理

5.3.1 使用索引扫描处理GROUP BY(紧凑索引扫描)

5.3.2 使用松散索引扫描处理GROUP BY

5.3.3 使用临时表处理GROUP BY

5.4 DISTINCT处理

5.4.1 SELECT DISTINCT

5.4.2 DISTINCT用于集合函数内部

5.5 临时表(Using temporary)

5.5.1 需要使用临时表的查询

5.5.2 在磁盘上创建临时表(使用Aria存储引擎)

5.5.3 与临时表有关的状态变量

5.5.4 带索引的内部临时表

5.5.5 内部临时表的注意事项

5.6 索引条件下推

5.7 多范围读

5.7.1 基于Rowld排序(Rowid-orderd scan)

5.7.2 基于Key排序(Key-ordered scan)

5.7.3 基于Key与Rowld排序(Key-ordered、Rowid-ordered scan)

5.7.4 “多范围读”优化与排序

5.7.5 “多范围读”优化的注意事项

5.8 索引合并

5.8.1 Using union

5.8.2 Using sort_union

5.8.3 Using intersect

5.8.4 Using sort intersect

5.9 数据表连接

5.9.1 连接类型

5.9.2 连接算法

5.9.3 连接的注意事项

5.10 子查询

5.10.1 半连接子查询优化

5.10.2 非半连接的子查询优化

5.10.3 子查询缓存

第6章 存储引擎

6.1 Aria存储引擎

6.1.1 事务

6.1.2 页面缓存

6.1.3 系统变量设置

6.2 XtraDB存储引擎

6.3 InnoDB存储引擎

6.3.1 MySQL 5.6 InnoDB

6.3.2 “脏页”刷新

6.3.3 缓冲池性能改善

6.3.4 原子写(针对FusionlO SSD的Atomic write)

6.3.5 扩展的InnoDB引擎状态输出

6.3.6 XtraDB重做日志存档

6.3.7 跟踪修改页面

6.4 全文检索引擎

6.4.1 添加全文检索索引

6.4.2 全文检索索引表空间

6.4.3 与全文检索索引相关的INFORMATION_SCHEMA信息

6.4.4 使用全文检索索引

6.4.5 注意事项

6.5 Memcached插件

6.5.1 架构

6.5.2 安装与测试

6.5.3 缓存策略

6.5.4 注册用户数据表

6.5.5 相关系统变量

6.6 Cassandra存储引擎

6.6.1 Cassandra

6.6.2 Cassandra存储引擎

6.7 CONNECT存储引擎

6.7.1 安装CONNECT存储引擎

6.7.2 连接Oracle RDBMS数据表

6.7.3 连接my.cnf设置文件

6.7.4 连接操作系统目录

6.8 Sequence存储引擎

6.8.1 Sequence存储引擎的基本用法

6.8.2 查找遗漏的编号

6.8.3 创建顺序组合的号码对

6.8.4 查找倍数或公倍数

6.8.5 顺序生成字母表

6.8.6 顺序生成日期

6.8.7 数据复制加工

6.9 Mroonga全文检索存储引擎

6.9.1 索引算法

6.9.2 安装Mroonga全文检索引擎

6.9.3 使用Mroonga全文检索引擎

第7章 其他功能

7.1 性能提升

7.2 管理与诊断

7.2.1 SHOW EXPLAIN FOR<THREAD-ID>

7.2.2 向慢查询日志输出执行计划

7.2.3 输出结构化的执行计划

7.2.4 线程的内存使用量

7.2.5 SHUTDOWN命令

7.2.6 强制终止用户或查询执行

7.2.7 GET DIAGNOSTICS

7.3 开发效率

7.3.1 LIMIT ROWS EXAMINED

7.3.2 DELETE...RETURNING

7.3.3 以微秒为单位保存时间

7.3.4 设置DATETIME类型的默认值

7.3.5 扩展正则表达式功能

7.3.6 虚拟列

7.3.7 动态列

7.4 分区

7.4.1 显式指定分区

7.4.2 交换分区表空间

7.5 备份

7.5.1 二进制日志远程备份

7.5.2 XtraBackup介绍

7.5.3 XtraBackup的功能

7.5.4 XtraBackup的高级用法

第8章 复制

8.1 全局事务ID

8.1.1 全局事务ID的定义

8.1.2 全局事务ID的必要性

8.1.3 MariaDB 10.0全局事务ID

8.1.4 MySQL 5.6全局事务ID

8.2 多源复制

8.2.1 多源复制相关命令

8.2.2 构建多源复制

8.2.3 多源复制与全局事务

8.3 多线程复制

8.3.1 MySQL 5.6的多线程复制

8.3.2 MariaDB 10.0的多线程复制

8.4 Crash safe slave

8.4.1 MariaDB 10.0的崩溃安全复制

8.4.2 MySQL 5.6的崩溃安全复制

8.5 改善基于ROW的复制功能

8.5.1 ROW格式的容量优化

8.5.2 ROW格式二进制日志的信息性日志事件

8.6 延迟复制

8.7 MariaDB与MySQL服务器间的复制

8.8 其他功能改善

8.8.1 二进制日志校验和

8.8.2 二进制日志API

8.8.3 提交二进制日志组

深入理解MariaDB与MySQL 精彩文摘

1.2.7 MariaDB 与MySQL 的选择

根据我有限的个人经验,选择DBMS 时要充分考虑以下4 点:

DBMS 性能

稳定性

DBMS 功能与实用工具

技术支持

前面已经讲过有关性能与稳定性的内容,但关于稳定性我还想再补充一点。我曾经修改过MySQL 5.6.14 的源代码,并利用MySQL 服务器拥有的复制功能实现了复制Memcached 数据的功能。实现Memcached 服务器与MySQL 服务器的复制功能差不多耗时一周半,但测试过程相当费劲,才一两天的工夫就因为段错误或内存泄漏而导致服务器发生崩溃。

实际测试期间,我发现了MySQL 5.6.14 的两处段错误Bug,还有3 处内存泄漏。经过3~4周的调试并修改相关代码后,服务器才得以稳定运行。发现内存泄漏Bug 后并提交给Oracle后,Oracle 要花费3 周以分析出现Bug 的原因,而针对这些Bug 的补丁也不知什么时候才能添加到新版本。因此,我们发现Bug 后经常需要自己动手修改。不仅5.6.14 版本,其 他版本也存在许多类似于段错误或内存泄漏的重大Bug,这使得测试MySQL 服务器代码稳定性的过程中会出现一些问题。

下面再聊聊DBMS 的功能。前面已经谈过DBMS 的性能与稳定性,在这两个方面,MariaDB 与MySQL 几乎完全一样。那么,DBMS 的功能会不会成为选择的决定性因素呢?我们先抛开MySQL 企业版不谈,只讨论MySQL 社区版与MariaDB 的功能。MySQL 5.5 推出时,人们曾大力宣扬其多核扩展性以及线程池功能。但令人遗憾的是,MySQL 5.5 社区版并不能使用该功能。而MariaDB 5.5 中,用户可以免费使用类似的线程池功能。

有时候,MariaDB 还会提供更好的DBMS 功能与诊断工具。企业级备份功能原本只存在于MySQL 企业版中,但是一家名为Percona① 的MySQL 技术支持公司开发出了更强大的备份功能,并发布给用户,供大家免费使用。用户有时想知道MySQL 服务器的内存使用情况,或想知道哪些线程占用了更多内存。这些小功能虽然琐碎,但却是必需的。在这些方面,MariaDB 提供了比MySQL 更多的功能以满足用户需求。对于这些小而必需的功能,Oracle 或Monty ProgramAB 这样的RDBMS 供应商开发较少;而使用MySQL 或MariaDB 的大企业则开发较多,比如Facebook、谷歌等。MariaDB 没有商业版本,所以这些增强功能谁都可以随意使用,不必受许可证限制。这最终会使MariaDB 具有更丰富的功能。

最后谈谈有关技术支持的内容。要获得MySQL 技术支持,用户需要与Oracle 签订合同。同样,用户要想获得MariaDB 技术支持,也需要与SkySQL② 签订合同。Oracle 只针对MySQL服务器提供技术支持,SkySQL 除了提供对MariaDB 的技术支持外,还对MySQL 提供技术支持。对于用户对MySQL 服务器的疑问,SkySQL 会分析问题所在并查明原因。若有可用的替代方案,则告知用户;反之,则他们只会向管理源代码的Oracle 提交Bug 报告。也就是说,SkySQL 不会针对MySQL 服务器提供所有部分的支持。

图书网:深入理解MariaDB与MySQL pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

数据库

Kali Linux & BackTrack渗透测试实战pdf

本书基于编写团队的实际经验,围绕渗透测试进行了全面介绍,并选择“Kali Linux(包含BackTrack)” Live CD作为讲解工具。下载BackTrack Live CD和Kali Linu...
数据库

SQL进阶教程pdf

数据库工程师进阶中级实用指南 挖掘SQL常见技术的新用法 基于标准SQL编写 示例程序均可下载 本书适合具有一定SQL编程经验的工程师阅读 本书特色 1.转变面向过程语言的思维定式,学习SQL常见技术...
数据库

锋利的SQLpdf

锋利的SQL 作者:张洪举 锋利的SQL 出版社:人民邮电出版社 锋利的SQL 内容简介 《锋利的SQL》从基础、开发、性能调整和实战4个方面介绍了SQL技术及其应用,包括数据库管理、表管理、索引管理...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • studyshu
      studyshu 9

      看看是否能有用