五年数据库专家,深入剖析高性能MySQL

前言

和其他数据库系统相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥好的作用,但同时也会带来一点选择上的困难。MySQL并不完美,却足够灵活,能够适应高要求的环境,例如Web类应用。同时,MySQL既可以嵌人到应用程序中,也可以支持数据仓库、内容索引和部署软件、高可用的冗余系统、在线事务处理系统(OLTP)等各种应用类型。

成为一名架构师几乎是所有程序员的梦想,然而在这大数据时代,少了MySQL数据库的架构系统,也是不会有前途的~~~

今天,小编就带来一篇高性能MySQL的秘籍,希望能帮到大家更好地学习。

全书共分为16章和6个附录,内容涵盖MySQL架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复、高可用与高可扩展性,以及云端的MySQL和MySQL相关工具等方面的内容。

第一部分:概述

第一章:MySQL的架构和历史

MySQL逻辑架构并发控制事务多版本并发控制MySQL的存储引擎MySQL时间线(Timeline)MySQL的开发模式

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

第二部分:打造坚实的基础

第二章:MySQL基准测试

为什么需要基准测试基准测试的策略基准测试方法基准测试工具基准测试案例

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

第三章:服务器性能剖析

性能优化简介对应用程序进行性能剖析剖析MySQL查询诊断间歇性问题其他剖析工具

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

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

选择优化的数据类型MySQLschema设计中的陷阱范式和反范式缓存表和汇总表加快ALTERTABLE操作的速度

第4章涵盖了不同数据类型的细节差别以及表设计的原则。良好的schema设计原则是普遍适用的,但MySQL有它自己的实现细节要注意。概括来说,尽可能保持任何东西小而简单总是好的。MySQL喜欢简单,需要使用数据库的人应该也同样会喜欢简单的原则。

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

索引基础索引的优点高性能的索引策略索案例学习维护索引和表

第5章则展开讨论了索引,这是数据库的物理设计。对于索引的深入理解和利用是高效使用MySQL的基础,相信这一章会经常需要回头翻看。通过本章可以看到,索引是一个非常复杂的话题!MySQL和存储引擎访问数据的方式,加上索引的特性,使得索引成为一个影响数据访问的有力而灵活的工作(无论数据是在磁盘中还是在内存中)。

第六章:查询性能优化

为什么查询速度会慢慢查询基础:优化数据访问重构查询的方式查询执行的基础MySQL查询优化器的局限性查询优化器的提示(hint)优化特定类型的查询案例学习

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

第七章:MySQL高级特性

分区表视图外键约束在MySQL内部存储代码游标绑定变量用户自定义函数插件字符集和校对全文素引分布式(XA)事务查询缓存

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

第三部分:配置应用程序

第八章:优化服务器设置

MySQL配置的工作原理什么不该做创建MySQL配置文件配置内存使用配置MySQL的I/O行为配置MySQL并发基于工作负载的配置完成基本配置安全和稳定的设置高级InnoDB设置

第8章介绍了如何配置MySQL,以便更好地利用硬件,达到更好的可靠性和鲁棒性。在阅读完这一章节之后,你应该有了一个比默认设置好得多的服务器配置。服务器应该更快更稳定了,并且除非运行出现了罕见的状况,都应该没有必要再去做优化配置的工作了。

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

什么限制了MySQL的性能如何为MySQL选择CPU平衡内存和磁盘资源固态存储为备库选择硬件RAID性能优化SAN和NAS使用多磁盘卷网络配置选择操作系统选择文件系统选择磁盘队列调度策略线程内存交换区操作系统状态

第9章解释了如何让操作系统和硬件工作得更好。另外也深人讨论了固态硬盘,为高可扩展性应用发挥更好的性能提供了硬件配置的建议。为MySQL选择和配置硬件,以及根据硬件配置MySQL,并不是什么神秘的艺术。通常,对于大部分目标需要的都是相同的技巧和知识。当然,也需要知道一些MySQL特有的特点。

第四部分:作为基础设施组件的MySQL

第十章:复制

复制概述配置复制复制的原理复制拓扑复制和容量规划复制管理和维护复制的问题和解决方案复制有多快MySQL复制的高级特性其他复制技术

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

第十一章:可扩展的MySQL

什么是可扩展性扩展MySQL负裁均衡

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

第十二章:高可用性

什么是高可用性导致宕机的原因如何实现高可用性避免单点失效故障转移和故障恢复

第12章讲述的是和可扩展性相关但又完全不同的主题:如何保障MySQL稳定而正确地持续运行。可以通过减少宕机来获得高可用性,这需要从以下两个方面来思考:增加两次故障之间的正常运行时间(MTBF),或者减少从故障中恢复的时间(MTTR)。

第十三章:云端的MySQL

云的优点、缺点和相关误解MySQL在云端的经济价值云中的MySQL的可扩展性和高可用性四种基础资源MySQL在云主机上的性能MySQL数据库即服务(DBaaS)

第13章将告诉你当MySQL在云计算环境中运行时会有什么不同的事情发生。在云端使用MySQL至少有两种主流的方法:在云服务器上安装MySQL,或者使用DBaaS服务。MySQL能够在云主机.上运行得很好,但云环境中的限制常常会导致更早需要进行数据拆分。并且尽管云服务器看起来和你的物理硬件很相似,但可能性能和服务质量要更低。

第十四章:应用层优化

常见问题Web服务器问题缓存拓展MySQLMySQL的替代品

第14章解释了什么是全方位的优化(ul-stackoptimization),就是从前端到后端的整体优化,从用户体验开始直到数据库。即使是世界上设计最好、最具可扩展性的架构,如果停电会导致彻底崩溃,无法抵御恶意攻击,解决不了应用的bug和程序员的错误,以及其他一些灾难场景,那就不是什么好的架构。

第十五章:备份与恢复

为什么要备份定义恢复需求设计MySQL备份方案管理和备份二进制日志备份数据从备份中恢复备份和恢复工具备份脚本化

第15章讨论了MySQL数据库各种备份与恢复的场景。这些策略可以帮助读者减少在各种不可抗的硬件失效时的宕机时间,保证在各种灾难下的数据最终可恢复。

第十六章:MySQL用户工具

接口工具命令行工具集SQL实用集监测工具

第16章探索了一些可以帮助用户更有效地管理和监控MySQL服务器的工具,有些是开源的,也有些是商业的。好的工具对管理MySQL至关重要。推荐使用一些已经可用、广泛测试过、流行的工具。

书签介绍

后记

最后,希望关于MySQL内部原理的知识能够帮助大家解决本篇没有覆盖到的一些情况。更希望朋友们能培养发现新问题的洞察力,能学习和实践合理的方式来设计、维护和诊断基于MySQL的系统。

想要获取文中PDF文档的朋友,请


转载请注明:http://www.aierlanlan.com/grrz/2315.html