啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

前言

经典不愧是经典,从使用到架构上了解一个高性能DB(MYSQL)。后面复制-可扩展-高可用章节收益颇多,讲述的理论不仅仅可以应用到MYSQL, 也适用于整个WEB场景。 另外一个小建议,这种内容特别丰富的书,要有选择的看,挑重点的看,当然,如果你英文不错,该书的原版以及几本著名的外文mysql书会是更好的选择。毕竟无论翻译者水平多高,信息经过一层传递总是会混进不少的噪声的,更何况是如此专业的一本长篇巨著。如果你像我那样不满足爬行于E文的那低阅读效率,那么揣着这么一本我感觉翻译质量还凑合的字典在手边还是一个不错的选择。是的,我是把它当字典一般扫完的。
在过去的两三年里,每当我遇到mysql的问题时,我几乎毫无例外祭出的武器叫google,这些年在大多数优秀技术人员成长的路上,这都是最好的一本书。但当你达到一定的层次,google能帮到你的会越来越少,特别是如果你只能在中文世界尤其是只能在墙内的中文世界漫游,你常会有一种一头撞上了天花板的感觉。没有人动了你的奶酪,只是你也许需要做出改变了。在“用以致学”的工程实用主义学习方式之下,我们就像令狐冲学习独孤九剑一样迅速地掌握了一门工具,并似乎得心应手地在实践中使用。但偶尔我们也应该回头补一补自己虚弱的内力。经验与技巧很重要,基础的薄弱则会在某个阶段成为绊脚石。
书中的内容很丰富,几乎已经覆盖了mysql的所有主要应用的各个方面,不妨对这大量的内容建立一个索引,就在原来的目录索引之上。

说了这么多让我们一起来看看内容吧

需要完整PDF版的,转发+点赞+关注后私信“666”获取免费领取方式


第一章:

本章概要地描述了MySQL的服务器架构。各种存储引蕈之间的主要区别,以及这些区别的重要性。另外也会回顾一下 MySQL的历史背景和基准测试,并试图通过简化细节和演示案例来讨论MySQL的原理。这些讨论无论是对数据库一无所知的新手,还是熟知其他数据库的专家,都不无裨益。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第二章:

基准测试(benchmark) 是MySQL新手和专家都需要掌握的一項基本技能。简单地说,基准测试是针对系统设计的一种压力测试。通常的目标是为了掌握系统的行为。但也有其他原因,如重现某个系统状态,或者是做新硬件的可靠性测试。本章将讨论MySQL和基于MySQL的应用的基准测试的重要性,策略和工具。我们将特别讨论一下sysbench,这是一款非常优秀的MySQL基准测试工具。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第三章:

在我们的技术咨询生涯中,最常碰到的三个性能相关的服务请求是;如何确认服务器是否达到了性能最佳的状态,找出某条语句为什么执行不够快,以及诊断被用户描述成“停顿"、“堆积”或者“卡死”的某些间歇性疑难故障。本章将主要针对这三个问题做出解答。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第四章:

这一章关注的是MySQL数据库的设计,主要介绍的是MySQL数据库设计与其他关系型数据库管理系统的区别。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第五章:

索引(在MySQL中也叫做“键(key)")是存储引擎用于快速找到记录的一种数据结构。这是索引的基本功能,除此之外,本章还将讨论索引其他一些方面有用的属性。

索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高几个数量级,“最优”的索引有时比一个“好的”索引性能要好两个数量级。创建一个真正“最优”的索引经常需要重写查询,所以,本章和下一章的关系非常紧密。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第六章:

本章将从查询设计的一些基本原则开始;这也是在发现查询效率不高的时候首先需要考虑的因素。然后会介绍一些更深的查询优化的技巧,井会介绍一些 MySQL优化器内部的机制。我们将展示MySQL是如何执行查询的,你也将学会如何去改变一个查询的执行计划。最后,我们要看一下MySQL优化器在哪些方面做得还不够,并探索查询优化的模式,以帮助MySQL更有效地执行查询。

本章的目标是帮助大家更深刻地理解MySQL如何真正地执行查询,井明自高效和低效的原因何在,这样才能充分发挥MySQL的优势,并避开它的弱点。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

需要完整PDF版的,转发+点赞+关注后私信“666”获取免费领取方式

第七章:

MySQL从5.0和5.1版本开始引入了很多高级特性,例如分区、触发器等,这对有其他关系型数据库使用背景的用户来说可能并不陌生。这些新特性吸引了很多用户开始使用MySQL;不过,这些特性的性能到底如何,还需要用户真正使用过才能知道。本章我们将为大家介绍,在真实的世界中,这些特性表现如何,而不是只简单地介绍参考手册或者宣传材料上的数据。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第八章:

在这一章,我们将解释为MySQL服务器创建一个靠谱的配置文件的过程。这是一个很绕的过程,有很多有意思的关注点和值得关注的思路。关注这些点很有必要,因为创建一个好配置的最快方法不是从学习配置项开始,也不是从问哪个配置项应该怎么设置或者怎么修改开始,更不是从检查服务器行为和询问哪个配置项可以提升性能开始。最好是从理解MySQL内核和行为开始。然后可以利用这些知识来指导配置MySQL。最后,可以将想要的配置和当前配置进行比较,然后纠正重要并且有价值的不同之处。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第九章:

MySQL服务器性能受制于整个系统最薄强的环节,承载它的操作系统和硬件往往是限制因素。磁盘大小。可用内存和CPU资源,网络,以及所有连接它们的组件,都会限制系统的最终容量。因此,需要小心地选择硬件,井对硬件和操作系统进行合适的配置。例如,若工作负载是I/O密集型的,一种方法是设计应用程序使得最大限度地减少MySQL的I/0操作。然而,更聪明的方式通常是升级I/0子系统,安装更多的内存,或重新配置现有的磁盘。

硬件的更新换代非常迅速,所以本章有关特定产品或组件的内容可能将很快变得过时。像往常一样,我们的目标是帮助提升对这些概念的理解,这样对于即使没有直接覆盖到的知识也可以举一反三。 这里我们将通过现有的硬件来阐明我们的观点。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第十章:

本章将阐述所有与复制相关的内容,首先简要介绍复制如何工作,然后讨论基本的复制服务搭建,包括与复制相关的配置以及如何管理和优化复制服务器。虽然本书的主题是高性能,但对于复制来说,我们同样需要关注其准确性和可靠性,因此我们也会讲述复制在什么情况下会失败,以及如何使其更好地工作。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第十一章:

MySQL经常被批评很难进行扩展,有些情况下这种看法是正确的,但如果选择正确的架构井很好地实现,就能够非常好地扩展MySQL.但是扩展性并不是一 个很好理解的主題,所以我们先来理清一些内容易混淆的地方。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第十二章:

本章将讲述我们提到的复制、可扩展性以及高可用性三个主题中的第三个。归根结底,.高可用性实际上意味着“更少的宕机时间"。然而糟糕的是,高可用性经常和其他相关的概念混淆,例如冗余、保障数据不丢失,以及负载均衡。我们希望之前的两章已经为清楚地理解高可用性做了足够的铺垫。跟其他两章一样, 这一章也不仅仅是关注高可用性的内容,一些相关的话题也会综合阐述。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第十三章:

许多人在云中使用MySQL,有时候规模还非常庞大,这并不奇怪。从我们的经验来看,大多数人使用的是Amazon Web Services 平台(AWS) :特别是Amazon的弹性计算云(Elastic Compute Cloud, EC2),弹性块存储(Elastic Block Store, EBS), 以及更小众的关系数据库服务(Relational Database Service, RDS)。

为了便于讨论MySQL在云中的应用,可以将其粗略分为两类。

  • laas (基础设施即服务):

laas是用于托管自有的MySQL服务器的云端基础架构。可以在云端购买虚拟的服务器资源来安装运行MySQL实例。也可以根据需求随意配置MySQL和操作系统,但没有权限也无法看到处于底层的物理硬件设备。

  • DBaaS (数据库即服务)

MySQL本身作为由云端管理的资源。用户需要先收到MySQL服务器的访问许可(通常是一个连接串)才能访问。也可以配置-些MySQL选项,但没有权限去控制或查看底层的操作系统或虚拟服务器实例。例如Amazon运行MySQL的RDS。其中一些服务器并非真的使用MySQL,但它们能兼容MySQL协议和查询语言。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第十四章:

如果在提高MySQL的性能上花费太多时间,容易使视野局限于MySQL本身,而忽略了用户体验。回过头来看,也许可以意识到,或许MySQL已经足够优化,对于用户看到的响应时间而言,其所占的比重已经非常之小,此时应该关注下其他部分了。这是个很不错的观点,尤其是对DBA而言,这是很值得去做的正确的事。但如果不是MySQL,那又是什么导致了问题呢?使用第3章提到的技术,通过测量可以快速而准确地给出答案。如果能顺着应用的逻辑过程从头到尾来剖析,那么找到问题的源头一般来说并不困难。有时,尽管问题在MySQL上,也很容易在系统的另一部分得到解决。

无论问题出在哪里,都至少可以找到一个靠谱的工具来帮助进行分析,而且通常是免费的。例如,如果有JavaScript或者页面渲染的问题,可以使用包括Firefox 浏览器的Firebug插件在内的调优工具,或者使用Yahoo!的YSlow工具。我们在第3章提到了几个应用层工具,一些工具甚至可以剖析整个堆栈: New Relic是一个很好的例子,它可以剖析Web应用的前端,应用以及后端。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第十五章:

  • 安全(访问备份,恢复数据的权限,文件是否需要加密)。
  • 备份存储在哪里,包括它们应该离源数据多远(在一块不同的盘上,-台不同的服
  • 务器上,或离线存储),以及如何将数据从源头移动到目的地。
  • 保留策略,审计,法律要求,以及相关的条款。
  • 存储解决方案和介质,压缩,以及增量备份。
  • 存储的格式。
  • 对备份的监控和报告。
  • 存储层内置备份功能,或者其他专用设备,例如预制式文件服务器。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

第十六章:

MySQL服务器发行包中并没有包含针对许多常用任务的工具,例如监控服务器或比较不同服务器间数据的工具。幸运的是,Oracle 的商业版提供了一些扩展工具,井且MySQL活跃的开源社区和第三方公司也提供了一系列的工具,降低了自己“重复发明轮子”的需要。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

写在最后:

这本书里有些内容我很感兴趣,以我现今的水平来说收益比较大的比如第4章中关于查询执行原理及第8章关于复制的内容。前者让我这个非专业DBA在写自己的查询语句的时候能够更有把握地看透它是否存在一些不良的形式;后者则是实现mysql可伸缩性与冗余的常用方式,里面的各种拓扑结构在让我眼花缭乱的同时获益良多,对公司数据库服务器组里几种拓扑结构演变过程有了更多的理解。

啃完阿里P9推荐的这本MySql领域经典之作,面试被问MySql没虚过

猜你喜欢

转载自blog.csdn.net/javachengzi/article/details/107358561
今日推荐