写在前面

在互联网行业,MySql数据库毫无疑问已经是最常用的数据库。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择MySql作为网站数据库。

作为一名编程人员,对MySql一定不会陌生,尤其是互联网行业,对MySql的使用是比较多的。对于求职者来说,MySql又是面试中一定会问到的重点,很多人拥有大厂梦,却因为MySQL败下阵来。

要学习Mysql,那就必须给大家安利一波《高性能MySql(第3版)》这本MySql领域的经典之作了。(全书共795页)

◎“只要你不敢以MySQL专家自诩,又岂敢错过这本神书?”

◎“一言以蔽之,写得好,编排得好,需要参考时容易到爆!”

◎“我可是从头到尾看了一遍上一版,可还是毫不犹豫拿起了这本《高性能MySQL(第3版)》,而且看完后一点都不后悔……”  

◎ 学习MySQL新特性,包括存储引擎、分区数据库、触发器和视图

◎ 实现复制的改进、高可用和集群

◎ 获得在云端运行MySQL的高性能

◎ 优化高级查询特性,如全文索引

◎ 从现代的多核CPU和固态硬盘中获益

◎ 探索备份和恢复的策略,包括新的在线备份工具

内容简介

本书是MySQL领域的经典之作,拥有广泛的影响力。第3版更新了大量的内容,不但涵盖了最新MySQL5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16章和6个附录,内容涵盖MySQL架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。

转发+关注,然后添加VX(tkzl6666)即可获得《高性能MySql(第3版)》电子版的免费领取方式。

本书不但适合数据库管理员(DBA) 阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。

概述

第1章:MySql架构与历史

第1 章是非常基础的一章,在更深入地学习之前建议先熟悉一下这部分内容。在有效地使用MySql 之前应当理解它是如何组织的。本章解释了MySQL 的架构及其存储引擎的关键设计。如果读者还不太熟悉关于数据库和事务的基础知识,本章也可以带来一点帮助。如果之前已经对其他关系数据库如Oracle 比较熟悉,本章也可以帮助读者了解MySQL 的入门知识。本章还包括了一点MySQL 的历史背景:MySQL 随着时间的演进、最近的公司所有权更替,以及我们认为比较重要的内容。

 

 

打造坚实的基础

第2章:MySql基准测试

第2章讨论了基准测试的基础,例如服务器可以处理的工作负载的类型、处理特定任务的速度等。基准测试是一项至关重要的技能,可用于评估服务器在不同负载下的表现,但也要明白在什么情况下基准测试不能发挥作用。

 

第3章:服务器性能剖析

第3章介绍了我们常用于故障诊断和服务器性能问题分析的一种面向响应时间的方法。该方法已经被证明可以解决我们曾碰到过的一些极为棘手的问题。当然也可以选择修改我们所使用的方法(实际上我们的方法也是从Cary Millsap 的方法修改而来的),但无论如何,至少不能没有方法胡乱猜测。

 

 

第4章:Schema与数据类型优化

从第4章到第6 章,连续介绍了三个关于良好的数据库逻辑设计和物理设计基础的话题。第4 章涵盖了不同数据类型的细节差别以及表设计的原则。

 

 

第5章:创建高性能的索引

第5 章则展开讨论了索引,这是数据库的物理设计。对于索引的深入理解和利用是高效使用MySQL 的基础,相信这一章会经常需要回头翻看。

 

第6章:查询性能优化

而第6 章则包含了分析MySQL 的查询是如何执行的,以及如何利用查询优化器的话题。该章也包含了大量常见类型查询的例子,演示了MySQL 是如何做好工作的,以及如何改写查询以利用MySQL 的特性。

 

 

 

 

第7章:MySql高级特性

到此为止,已经覆盖了关于数据库的基础内容:表、索引、数据和查询。第7 章则在MySQL 基础知识之外介绍了MySQL 的高级特性是如何工作的。这章的内容包括分区、存储引擎、触发器,以及字符集。MySQL 中这些特性的实现可能不同于其他数据库,可能之前读者并不清楚这些不同,因此理解它们对于性能可能会带来新的收益。

 

 

配置应用程序

接下来的两章讲述的是如何让MySQL、应用程序及硬件一起很好地工作。

第8章:优化服务器设置

第8 章介绍了如何配置MySQL,以便更好地利用硬件,达到更好的可靠性和鲁棒性。

 

 

第9章:操作系统和硬件优化

第9 章解释了如何让操作系统和硬件工作得更好。另外也深入讨论了固态硬盘,为高可扩展性应用发挥更好的性能提供了硬件配置的建议。

 

 

 

 

第8/9两章都一定程度地涉及了MySQL 的内部知识。这将会是一个反复出现的主题,附录中也会有相关内容可以学习到MySQL 的内部是如何实现的,理解了这些知识将帮助读者更好地理解某些现象背后的原理。

作为基础设施组件的MySQL

MySQL 不是存在于真空中的,而是应用整体的一个环节,因此需要考虑整个应用架构的鲁棒性。下面的章节将告诉我们该如何做到这一点。

第10章:复制

第10 章讨论了MySQL 的杀手级特性:能够设置多个服务器从一台主服务器同步数据。不幸的是,复制可能也是MySQL 给很多用户带来困扰的一个特性。但实际上不应该发生这样的情况,本章将告诉你如何让复制运行得更好。

 

 

 

 

第11章: 可扩展的MySql

第11章讨论了什么是可扩展性(这和性能不是一回事),应用和系统为什么会无法扩展,该怎么改善扩展性。如果能够正确地处理,MySQL 的可扩展性是足以应付任何需求的。

 

第12章:高可用性

第12章讲述的是和可扩展性相关但又完全不同的主题:如何保障MySQL 稳定而正确地持续运行。

 

第13章:云端的MySql

13 章将告诉你当MySQL 在云计算环境中运行时会有什么不同的事情发生。

 

第14章:应用层优化

第14章解释了什么是全方位的优化(full-stack optimization),就是从前端到后端的整体优化,从用户体验开始直到数据库。

 

第15章:备份与恢复

即使是世界上设计最好、最具可扩展性的架构,如果停电会导致彻底崩溃,无法抵御恶意攻击,解决不了应用的bug 和程序员的错误,以及其他一些灾难场景,那就不是什么好的架构。第15 章讨论了MySQL 数据库各种备份与恢复的场景。这些策略可以帮助读者减少在各种不可抗的硬件失效时的宕机时间,保证在各种灾难下的数据最终可恢复。

 

 

转发+关注,然后添加VX(tkzl6666) 即可获得《高性能MySql(第3版)》电子版的免费领取方式。

其他有用的主题

在本书的最后一章以及附录中,我们探讨了一些无法明确地放到前面章节的内容,以及一些被前面多个章节引用而需要特别注意的主题。

第16章:MySql用户工具

第16章探索了一些可以帮助用户更有效地管理和监控MySQL 服务器的工具,有些是开源的,也有些是商业的。

 

 

附录

  • 附录A 介绍了近年来成长迅速的三个主要的非MySQL 官方版本,其中一个是我们公司在维护的产品。知道还有其他什么是可用的选择是有价值的;很多MySQL 难以解决的棘手问题在其他的变种版本中说不定就不是问题了。这三个版本中的两个(Percona Server 和MariaDB)是MySQL 的完全可替换版本,所以尝试使用的成本相对来说是很低的。当然,在这里我们也需要补充一点,Oracle 提供的MySQL 官方版本对于大多数用户来说都能服务得很好。  
  • 附录B 演示了如何检查MySQL 服务器。知道如何从服务器获取状态信息是非常重要的;而了解这些状态代表的意义则更加重要。这里将覆盖SHOW INNODB STATUS 的输出结果,因此这里包含了InnoDB 事务存储引擎的深入信息。在这个附录中讨论了很多InnoDB的内部信息。  
  • 附录C 演示了如何高效地将大文件从一个地方复制到另外一个地方。如果要管理大量的数据,这种操作是经常都会碰到的。
  • 附录D 演示了如何真正地使用并理解EXPLAIN 命令。附录E 演示了如何破除不同查询所请求的锁互相干扰的问题。最后,附录F 介绍了Sphinx,一个基于MySQL 的高性能的全文索引系统。