MySQL王者晋级之路 pdf

MySQL王者晋级之路

内容简介

目前大部分软件开发平台都基于Linux,很多互联网公司都把MySQL作为后端数据存储的数据库。如果把MySQL比喻成数据库界的一条巨龙,则本书涵盖的所有知识点就是这条巨龙的组成部分。本书深入剖析MySQL数据库体系结构,实战演练备份恢复、主从复制,详解高可用集群架构的设计与实践过程,详细梳理优化思路,展现新版本的特性,并与真实生产案例相结合,通过核心原理到“王者”实战,全面覆盖MySQL数据库的知识点。

作者简介

张甦,极数学院创始人之一,51CTO知名博主。近十年互联网线上处理及培训经验,专注于MySQL数据库,对MongoDB、Redis等NoSQL数据库以及Hadoop生态圈相关技术有深入研究。曾就职于数据库服务公司、某大型电商平台,及汽车类网站等大型互联网公司。麾下的学员遍布各大企业。

目录

第1部分 倔强青铜篇

第1章 MySQL简介与主流分支版本

1.1 MySQL简介

1.2 MySQL主流的分支版本

1.2.1 官方版本的MySQL

1.2.2 Percona Server

1.2.3 MariaDB

第2章 MySQL数据库的安装、启动和关闭

2.1 下载MySQL二进制软件包

2.2 安装前系统环境检测

2.3 MySQL 5.6版本的安装过程

2.4 创建密码

2.5 关闭MySQL数据库

2.6 基础数据库的名称

2.7 MySQL 5.7版本的安装

2.8 MySQL数据库root密码丢失的问题

2.9 MySQL数据库的连接方式

2.10 用户权限管理

第3章 MySQL体系结构与存储引擎

3.1 MySQL体系结构

3.2 Query Cache详解

3.3 存储引擎

3.4 InnoDB体系结构

3.4.1 数据库和数据库实例

3.4.2 InnoDB存储结构

3.4.3 内存结构

3.4.4 Buffer状态及其链表结构

3.4.5 各大刷新线程及其作用

3.4.6 内存刷新机制

3.4.7 InnoDB的三大特性

第4章 数据库文件

4.1 参数文件

4.2 参数类型

4.3 错误日志文件(error log)

4.4 二进制日志文件(binary log)

4.5 慢查询日志(slow log)

4.6 全量日志(general log)

4.7 审计日志(audit log)

4.8 中继日志(relay log)

4.9 Pid文件

4.10 Socket文件

4.11 表结构文件

4.12 InnoDB存储引擎文件

第5章 表

5.1 整型

5.2 浮点型

5.3 时间类型

5.4 字符串类型

5.5 字符集

5.6 表碎片产生的原因

5.7 碎片计算方法及整理过程

5.8 表统计信息

5.9 统计信息的收集方法

5.10 MySQL库表常用命令总结

第6章 索引

6.1 二叉树结构

6.2 平衡二叉树结构

6.3 B-tree结构

6.4 B+tree

6.4.1 聚集索引和普通索引

6.4.2 ICP、MRR和BKA

6.4.3 主键索引和唯一索引

6.4.4 覆盖索引

6.4.5 前缀索引

6.4.6 联合索引

6.5 哈希索引

6.6 索引的总结

第7章 事务

7.1 事务的特性

7.2 事务语句

7.3 truncate和delete的区别

7.4 事务的隔离级别

7.5 细说脏读、不可重复读、幻读、可重复读现象

7.5.1 脏读

7.5.2 不可重复读与幻读

7.5.3 可重复读

第8章 锁

8.1 InnoDB的锁类型

8.1.1 读锁

8.1.2 写锁

8.1.3 MDL锁

8.1.4 意向锁

8.2 InnoDB行锁种类

8.2.1 单个行记录的锁

8.2.2 间隙锁(GAP lock)

8.2.3 Next-key Locks

8.3 锁等待和死锁

8.4 锁问题的监控

第2部分 秩序白银篇

第9章 备份恢复

9.1 MySQL的备份方式

9.2 冷备及恢复

9.3 热备及恢复

9.3.1 mysqldump的备份与恢复

9.3.2 select …into outfile

9.3.3 load data与insert的插入速度对比

9.3.4 mydumper

9.3.5 裸文件备份XtraBackup

9.4 流式化备份

9.4.1 非压缩模式的备份

9.4.2 压缩模式的备份

9.4.3 远程备份

9.5 表空间传输

9.6 利用binlog2sql进行闪回

9.7 binlog server

9.8 总结

第3部分 荣耀黄金篇

第10章 主从复制概述

10.1 常见的几种主从架构模式图

10.2 主从复制功能

10.3 主从复制原理

10.4 复制中的重点参数详解

第11章 复制原理及实战演练

11.1 异步复制

11.2 主从复制故障处理

11.3 半同步复制

11.4 半同步复制和异步复制模式的切换

11.5 GTID 复制

11.5.1 GTID原理介绍

11.5.2 GTID存在的价值

11.5.3 主从复制中GTID的管理与维护

11.5.4 GTID复制与传统复制的切换

11.5.5 GTID使用中的限制条件

11.6 多源复制

11.7 主从延迟的解决方案及并行复制

11.8 主从复制的数据校验

11.9 总结

第4部分 尊贵铂金篇

第12章 MHA

12.1 MHA简介

12.1.1 MHA部署

12.1.2 MHA原理

12.1.3 MHA的优缺点

12.1.4 MHA工具包的功能

12.2 实战演练

第13章 Keepalived+双主架构

13.1 Keepalived介绍

13.2 集群搭建思路及建议

13.3 实验部署演练

第14章 PXC

14.1 PXC原理

14.2 PXC架构的优缺点

14.3 PXC中重要概念和重点参数

14.4 PXC架构搭建实战

14.5 PXC集群状态的监控

14.6 从节点在线转化为PXC节点

第15章 ProxySQL

15.1 ProxySQL的安装与启动

15.2 配置ProxySQL监控

15.3 ProxySQL的多层配置系统

15.4 配置ProxySQL主从分组信息

15.5 配置读写分离策略

15.6 测试读写分离

15.7 总结

第5部分 永恒钻石篇

第16章 MySQL 5.7新特性

16.1 InnoDB存储引擎的增强

16.2 其他方面的增强

第17章 MySQL全面优化

17.1 硬件优化

17.2 配置参数优化

17.3 从Linux操作系统层面来谈对MySQL的优化

17.4 表设计及其他优化

17.5 整体管理优化总结

第6部分 至尊星耀篇

第18章 Lepus之MySQL监控

18.1 Lepus简介

18.2 实战部署

18.3 监控MySQL服务器

18.4 部署Lepus慢查询分析平台实战

18.5 监控总结

第19章 MySQL版本升级

19.1 升级方式

19.2 实战演练

第7部分 最强王者篇

第20章 MySQL面试宝典

20.1 自我介绍

20.2 技术问答

感悟与笔记

ICP

Index Condition Pushdown(ICP)是Mysq使用索引从表中检索行数据的一种优化方式。

传统查询流程

 存储引擎遍历索引定位行,返回给Server层

 Server层对这些数据进行WHERE过滤处理,返回给Client层

ICP优化查询流程

 存储引擎在遍历索引定位行

 存储引擎对这些索引进行WHERE过滤,返回Server层

 Server层将数据返回给Client层

查看ICP是否开启

SHOW variable like '%optimizer_switch%';

开启,关闭ICP

SET global optimizer_switch="index_condition_pushdown=on";   -- 开启全局参数
SET session optimizer_switch="index_condition_pushdown=on";  -- 开启会话参数

SET global optimizer_switch="index_condition_pushdown=off";  -- 关闭全局参数
SET session optimizer_switch="index_condition_pushdown=off"; -- 关闭全局参数

ICP的优点

 ICP将WHERE过滤条件放到了存储引擎层面去执行,带来了以下优点

 减少了存储引擎层访问基表的次数

 减少了Server层访问存储引擎的次数。

MRR

Multi-Range Read Optimization(MRR)通过两个参数控制,一个是mrr, 另一个是mrr_cost_based。两个参数是默认开启的(mrr=on 和mrr_cost_based=on)。

mrr_cost_based表示是否基于成本的算法来确定采用MRR优化

-- 开启mrr_cost_based后会根据成本算法自行判断是否采用MRR优化
SET global optimizer_switch="mrr_cost_based=on";

-- 强制采用MRR优化
SET global optimizer_switch="mrr_cost_based=off";

mrr表示是否开启MRR优化

 1、当mrr_cost_based=on mrr=on 时根据成本算法采用MRR优化

 4、当mrr_cost_based=off mrr=on 时永远采用MRR优化

 3、当mrr=off 时永远不采用MRR优化

MRR原理

MySQL通过普通索引获取数据的方式

 1、先通过索引页的叶子结点找到对应的主键

 2、通过主键找到行数据记录

 但是如果普通索引的字段有一些重复的值,那么根据这个字段去做WHERE过渡的时候,每次取到的主键顺序可能不是按照顺序的,因此随机I/O的现象应会发生。

MRR的原理流程

 1、先通过索引页的叶子结点找到对应的主键

 2、把主键值都放入到read_rnd_buffer中然后在read_rnd_buffer中进行排序

 3、通过排序好的主键值取得行数据记录

会员免费下载

链接:https://pan.baidu.com/s/14f0S9yCExs1KLR-FQ3eaoQ

提取码: ****** 查看

¥69/年 开通VIP会员

成为本站VIP会员即可无限下载。 请先点击百度网盘,看资源是否还在,不在请点击链接通知站长补资源。

资源标签点击标签可查看对应分类的资源

MySQL

资源推荐

Oracle数据库性能优化方法论和最佳实践

Oracle数据库管理从入门到精通

Oracle PL/SQL DBA编程入门

高性能MySQL(第3版)

Oracle PLSQL性能调优诀窍与方法

数据库系统导论(原书第8版)

Hadoop大数据挖掘从入门到进阶实战

PostgreSQL实战

Copyright © 2021-2022 知识猫. All Rights Reserved.