小苏子
小苏子PDF在线图书

深入理解MariaDB与MySQL 内容简介

深入理解MariaDB与MySQL 内容简介

深入理解MariaDB与MySQL 目录

深入理解MariaDB与MySQL 精彩文摘

《深入理解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。本书内容涉及MariaDB 5.1~10.0的各个方面,讲解重点在于MariaDB 10.0的各种实用功能。此外,MariaDB与MySQL有着紧密的联系,书中对MariaDB 10.0与MySQL 5.6的新功能进行了比较,读者可以同时学习MariaDB与MySQL的内容。第1章 MariaDB1.1 MariaDB1.2 MariaDB与MySQL1.2.1 MariaDB、MySQL和PerconaServer1.2.2 相同点1.2.3 不同点1.2.4 各版本间的兼容性1.2.5 性能比较1.2.6 MariaDB是否会取代MySQL1.2.7 MariaDB与MySQL的选择第2章 安装2.1 下载2.2 安装2.2.1 在Windows操作系统下安装MariaDB2.2.2 在Linux操作系统下安装MariaDB2.3 更新2.3.1 从MySQL升级到MariaDB时的注意事项2.3.2 不受版本限制的安全升级法2.3.3 从MySQL 5.0或之前版本升级为MariaDB 5.52.3.4 从MySQL 5.1升级为MariaDB 5.52.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 INSERT3.5.2 SELECT3.5.3 UPDATE3.5.4 REPLACE3.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_JOIN4.4.3 USE INDEX/FORCE INDEX/IGNORE INDEX4.4.4 SQL_CACHE/SQL_NO_CACHE4.4.5 SQL_CALC_FOUND_ROWS4.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 BY5.3.3 使用临时表处理GROUP BY5.4 DISTINCT处理5.4.1 SELECT DISTINCT5.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 union5.8.2 Using sort_union5.8.3 Using intersect5.8.4 Using sort intersect5.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 InnoDB6.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 Cassandra6.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 DIAGNOSTICS7.3 开发效率7.3.1 LIMIT ROWS EXAMINED7.3.2 DELETE…RETURNING7.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 全局事务ID8.1.1 全局事务ID的定义8.1.2 全局事务ID的必要性8.1.3 MariaDB 10.0全局事务ID8.1.4 MySQL 5.6全局事务ID8.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 slave8.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 二进制日志API8.8.3 提交二进制日志组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 服务器提供所有部分的支持。

赞(0)
未经允许不得转载:小苏子图书 » 深入理解MariaDB与MySQL 内容简介