MySQL之所以能成为现在最流行的开源数据库,这跟它的开放性、包容性是分不开的!
我先说一个笑话。这个笑话是我从万维钢的专栏里看到的。
三个逻辑学家走进酒吧,酒保问他们,三位都喝啤酒吗?
第一个逻辑学家说,我不知道。
第二个逻辑学家说,我不知道。
第三个逻辑学家说,是的。
这个笑话有点冷,需要用一点逻辑才能欣赏。要想否定“三人都喝啤酒”,只要有一个人知道自己不喝就行了。前两个逻辑学家说不知道,就说明他们自己是想喝的,只是不知道别人喝不喝。而第三个人一看前两个人都说不知道,那就说明这两个人肯定都是要喝的,而他自己也想喝啤酒,所以他就可以判断三人都想喝啤酒。
他们的回答有点怪,但是非常准确。
为什么要讲这个故事呢?因为像这种认真和严谨,你将在我们书中的每一页都能感受到。相信通过这本书的系统性训练,大家也能感受到这种思维方式的美,最终也能获得这种思维方式。
“授人以鱼,不如授之以渔。”具备优秀的思维能力才是在未来可以迁移的能力,所以,接下来给大家分享的这份《Mysql性能优化金字塔法则》大家要好好看!同时,想要这份文档的朋友们只需要转发+关注,扫描小编的二维码即可免费获取!!!
主要内容
本书一共分为3篇:基础篇、案例篇和工具篇。“基础篇”我们主要从理论基础和基本原理层面介绍了MySQL的安装与配置等;“案例篇”我们是从硬件和系统、MySQL架构等方面给出了性能优化的十几个案例,“工具篇”我们主要介绍了在MySQL性能优化过程中需要用到的各种工具等等!
基础篇
基础篇的内容设计,旨在为大家普及一些在性能优化过程中可能使用到的MySQL基础知识。为了方便大家对MySQL的体系结构和组件有一个整体认识,首先,完整介绍MySQL的安装、升级和整个体系组成结构,并介绍在MySQL运行过程中所有后台线程的作用;
这一部分我们用14个章节重点介绍MySQL的4个系统厍,希望引起读者对架构优化的思考。相信大家通过阅读基础篇的内容一定会有所收获。
第3章MySQL体系结构,本章会从整体上简要介绍整个MySQL Server体系是由哪些组件组成的,MySQL默认支持哪些存储引擎,我们常用的ImnoDB存储引擎又是由哪些组件组成的,以及各个组件的作用是什么,InnoDB存储引擎中有哪些后台线程,MySQL有哪些前台线程等内容。下面将以MySQL 5.7.20版本为例进行介绍。
第4章performance schema初相识,本章首先介绍什么是performance_schema,以及它能做什么;然后简单介绍如何快速上手使用performance schema的方法;最后简单介绍performance_schema由哪些表组成,以及这些表的大致作用是什么。
本章涉及两个基本概念。
- instruments:生产者,用于采集MySQL中各种操作产生的事件信息,对应配置表中的配置项,我们可以称之为事件采集配置项。以下提及的生产者均统称为instruments
- consumers:消费者,对应的消费者表用于存储来自instruments采集的数据,对应配置表中的配置项,我们可以称之为消费存储配置项。以下提及的消费者均统称为consumers
通过第4章和第5章对performance schema的介绍,相信大家对什么是performance schema已经初步形成了一个整体认识。本章将介绍一些performance_schema应用示例,以方便大家能够快速了解如何使用performance schema来排查常见的数据库性能问题。
在第4~6章中,为大家介绍了performance schema系统库。为什么要把performance schema排在前面介绍呢?其中一个原因就是它是sys系统库的数据来源。
从本章开始的第7~9章,将为大家介绍什么是sys系统库,以及如何使用sys系统库来排查所常见的数据库性能问题。
sys系统库初相识
sys系统库配置表
sys系统库应用示例荟萃第
从本章开始的第10章和第11章,将为大家介绍什么是information schema,以及如何使用information schema来查询一些在日常工作中所需的数据库信息。
information schema初相识
information schema应用示例荟萃
统库下的持久表的映射。从本章开始的第12~I7章,将为大家详细介绍mysql系统库。本章先介绍mysql 系统库中的权限系统表。
在mysq1系统库中,MySQL访问权限系统表包含如下几个表:
- user:包含用户账户、全局权限和其他非权限列表(安全配置字段和资源控制字段)
- db:数据库级别的权限表。
- tables priv:表级别的权限表。
- columns priv:字段级别的权限表。
- procs priv:存储过程和函数权限表。
- proxies priv:代理用户权限表。
mysql系统库之权限系统表
mysql系统库之访问权限控制系统
mysql系统库之统计信息表
mysql系统库应用示例荟萃
第18章复制技术的演进,复制技术的演进实际上有两条路线,一条路线为基于数据安全的复制技术演进:另一条路线为基于复制效率的复制技术演进。在本章中,我们将针对这两条复制技术的演进路线分别进行介绍。
第19章事务概念基础,讲到事务概念,就必须要提到事务隔离级别。关于这块内容,笔者问过很多同事,也作为面试内容,发现大家容易混淆,说不清有哪几种事务隔离级别,以及分不清事务隔离级别和异常现象。本章就将梳理事务隔离级别和异常现象,希望大家读完后对这部分内容不再混淆。
第20章InnoDB锁,对数据库中锁的作用大家应该都比较了解,了解MySQL的读者肯定也会知道其中一些锁的类型例如间隙锁、记录锁等,但是否清楚在各种情况下MySQL是如何施加锁的呢?这一章会对InnoDB锁进行详细的讲解,包括锁的类型、如何查看锁以及对各种锁的验证等。
第21章SQL优化,在这些年的工作中,笔者发现大多数性能问题都与SOL语句有关:在参与过的一些项目中,笔者也发现大多数开发人员不太关心程序中执行的SQL语句。正因为这样,业界涌现出很多优秀的SQL语句审核平台,协助开发人员和DBA的工作。本章能够帮助大家加深对MySQL中索引和Join算法的理解,可以结合本书中的执行计划和案例章节来阅读本章内容。
第22章MySQL读写扩展,这些年,更多的企业,尤其是传统企业愿意尝试使用MySQL数据库,但MySQL的架构与传统IOE架构大不相同。在与客户交流的过程中,笔者了解到从读写分离到分库分表,再到NewSQL,客户在进行不断地探索。本章将对MySQL中的读写扩展架构进行解释和分析,帮助尝试使用MySQL数据库的企业能够根据业务场景来选择合适的架构。
案例篇
这篇文章中的“案例篇”也是我见过的相对比较系统化介绍性能优化方面的内容,从服务器、操作系统、MySQL、SQL和锁方面整体梳理了MySQL性能优化的方方面面,相关案例都具有代表性,很值得参考和验证,也希望读者能参考案例来验证和测试,并举一反三,结合自己环境的实际场景构建起性能改进的方法论。
第25章性能调优金字塔,本章介绍的三种调优方法是按照金字塔的调优顺序排列的。一般来说,自底向上调优的效果是成反比的,而越往下层调优效果越好,但是难度也越大。
第26章SQL语句执行慢真假难辨,本章将介绍一种比较通用的判断SQL语句执行慢到底是不是数据库响应时间导致的方法来解决这个问题。
第28章每隔45天的MySQL性能低谷,本章将介绍数据库最核心依赖的操作系统VO存储系统的相关知识,并通过RAID卡导致性能下降的案例介绍分析和解决ⅣO性能问题的一般方法。这对于绝大部分采用自有硬件搭建MySQL服务的DBA来说非常有参考意义。
第32章MySQL挂起诊断思路,本章通过MySQL性能陡降为O无法继续提供服务的案例介绍了在极端情况下的问题的解决思路和诊断方法,读者可以借鉴对应思路尽量缩减数据库故障时间。
第33章硬件和系统调优,本章汇总了之前硬件或者操作系统对MySQL性能影响的相关因素并分类列出了从底层优化数据库性能的相关方法。
第34章并发删除数据造成死锁,在第20章中讲解了MySQL中加锁的分析,我们还需要将这些理论知识运用到实际中。从本章开始将介绍几个死锁案例,下面我们先介绍如何查看MySQL中的死锁日志。
工具篇
sysbench不仅可用于数据库基准测试,也可用于服务器的其他工作负载基准测试。本章主要以1.0版本为例介绍sysbench。在新的Release版本下,sysbench新增与优化了如下一些特性。
- 可以收集有关速率和延迟时间的统计数据,包括延迟百分比和直方图。
- 低开销,可以执行数以千计的并发线程,能够每秒产生和跟踪数亿个事件。
- 通过Lua脚本轻松实现了预定义的钩子,以创建新的测试基准。
第45章mysqladmin和innotop工具详解,mysqladmin是一个可以打印一些Debug(调试)信息,以及按照一定频率打印MySQL状态变量差异等状态值的工具。innotop是一个交互式的能够打印更多的MySQL状态信息的工具。在排查一些问题时,通常可以使用它们来实时打印一些状态信息,以便更高效地找到问题的原因。下面我们将对这两个工具分别进行详细介绍。
47章Percona Toolkit常用工具详解,本章部分内容参考自Percona Toolkit 3.0.12用户手册。另外,本章只介绍可辅助性能排查的常用工具,如有其他需求,请自行查看Percona Toolkit 3.0.12用户手册。
第49章,随着互联网的迅速发展,在MySOL数据库中存放的数据量迅速增加,MySQL数据库的并发访问量也迅速增加,这时mysqldump备份工具的一些缺点就开始暴露出来。于是,一款更高效且对应用影响更小的备份工具就成了MySQL用户们的共同诉求,这时Percona XtraBackup应运而生。下面我们将对XtraBackup备份工具进行详细介绍。
在第49章中,我们提到使用xtrabackup工具可以更高效地执行备份,且可以做到备份时对应用的影响更小,但是它是通过复制文件系统中的物理文件进行备份的工具,对于一些需要并行导入导出纯文本的场景无法覆盖。下面我们将对mydumper工具包中的mydumper和lmyloader命令进行详细介绍。
数据库管理人员或多或少都会碰到一些误操作数据的情况,这个时候,只需要一个小小的闪回工具,将误操作那一小部分数据在数据库中反向操作即可恢复原状。
对于MySQL而言,目前有一些现成的开源闪回工具,完全不需要自己重复“造轮子”,其中使用得比较多的要数binlog2sqL和flashback了,下面我们将对这两款主流的闪回工具进行详细介绍。
获取方式
点赞+关注+转发,扫描小编的即可免费获取这份《Mysql性能优化金字塔法则》文档!!!