和其他数据库系统相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥好的作用,但同时也会带来一点选择上的困难。MySQL并不完美,却足够灵活,能够适应高要求的环境,例如Web类应用。同时,MySQL既可以嵌入到应用程序中,也可以支持数据仓库、内容索引和部署软件、高可用的冗余系统、在线事务处理系统(OLTP)等各种应用类型。
成为一名架构师几乎是所有程序员的梦想,然而在这大数据时代,少了MySQL数据库的架构系统,也是不会有前途的~~~
今天, 小编就带来一篇高性能MySQL的秘籍,希望能帮到大家更好地学习。
全书共分为16章和6个附录,内容涵盖MySQL架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复、高可用与高可扩展性,以及云端的MySQL和MySQL相关工具等方面的内容。
第一章:MySQL的架构和历史
第1章是非常基础的一章,在更深入地学习之前建议先熟悉一下这部分内容。在有效地使用MySQL之前应当理解它是如何组织的。本章解释了 MySQL的架构及其存储引擎的关键设计。如果读者还不太熟悉关于数据库和事务的基础知识,本章也可以带来一点帮助。如果之前已经对其他关系数据库如Oracle比较熟悉,本章也可以帮助读者了解MySQL的入门知识。本章还包括了一点MySQL的历史背景:MySQL ffi着时间的演进、最近的公司所有权更替,以及我们认为比较重要的内容。
第二章:MySQL基准测试
第2章讨论了基准测试的基础,例如服务器可以处理的工作负载的类型、处理特定任务的速度等。基准测试是一项至关重要的技能,可用手评估服务器在不同负莪下的表现,但也要明白在什么情况下基准测试不能发挥作用。
第三章:服务器性能剖析
第3章介绍了我们常用于故障诊断和服务器性能问题分析的一种面向响应时间的方法。该方法已经被证明可以解决我们曾碰到过的一些极为竦手的问题.当然也可以选择修改我们所使用的方法(实际上我们的方法也是从Cary Millsap的方法修改而来的),但无论如何,至少不能没有方法胡乱猜测。
第四章:Schema与数据类型优化
第4章涵盖了不同数据类型的细节差别以及表设计的原则。良好的schema设计原则是普遍适用的,但MySQL有它自己的实现细节要注意。概括来说,尽可能保持任何东西小而简单总是好的。MySQL喜欢简单,需要使用数据库的人应该也同样会喜欢简单的原则。
第五章:创建高性能的索引
第5章则展开讨论了索引,这是数据库的物理设计。对于索引的深入理解和利用是高效使用MySQL的基础,相信这一章会经常需要回头翻看。通过本章可以看到,索引是一个非常复杂的话题! MySQL和存储引擎访问数据的方式,加上索引的特性,使得索引成为一个影响数据访问的有力而灵活的工作(无论数据是在磁盘中还是在内存中)。
第六章:查询性能优化
第6章则包含了分析MySQL的查询是如何执行的,以及如何利用查询优化器的话题。该章也包含了大量常见类型查询的例子,演示了MySQL是如何做好工作的,以及如何改写查询以利用MySQL的特性。
第七章:MySQL高级特性
第7章则在MySQL基础知识之外介绍了MySQL的高级特性是如何工作的。这章的内容包括分区、存储引擎、触发器,以及字符集。MySQL中这些特性的实现可能不同于其他数据库,可能之前读者并不清楚这些不同,因此理解它们对于性能可能会带来新的收益。
第八章:优化服务器设置
第8章介绍了如何配置MySQL,以便更好地利用硬件,达到更好的可靠性和鲁棒性。在阅读完这一章节之后,你应该有了一个比默认设置好得多的服务器配置。服务器应该更快更稳定了,并且除非运行出现了罕见的状况,都应该没有必要再去做优化配置的工作了。
第九章:操作系统和硬件优化
操作系统状态
第9章解释了如何让操作系统和硬件工作得更好。另外也深入讨论了固态硬盘,为高可扩展性应用发挥更好的性能提供了硬件配置的建议。为MySQL选择和配置硬件,以及根据硬件配置MySQL,并不是什么神秘的艺术。通常,对于大部分目标需要的都是相同的技巧和知识。当然,也需要知道一些MySQL特有的特点。
第十章:复制
第10章讨论了MySQL的杀手级特性:能够设置多个服务器从一台主服务器同步数据。不幸的是,复制可能也是MySQL给很多用户带来困扰的一个特性。但实际上不应该发生这样的情况,本章将告诉你如何让复制运行得更好。
第十一章:可扩展的MySQL
第11章讨论了什么是可扩展性(这和性能不是一回事),应用和系统为什么会无法扩展,该怎么改善扩展性。如果能够正确地处理,MySQL的可扩展性是足以应付任何需求的。
第十二章:高可用性
第12章讲述的是和可扩展性相关但又完全不同的主题:如何保障MySQL稳定而正确地持续运行。可以通过减少宕机来获得高可用性,这需要从以下两个方面来思考:增加两次故障之间的正常运行时间(MTBF), 或者减少从故障中恢复的时间(MTTR)。
第十三章:云端的MySQL
第13章将告诉你当MySQL在云计算环境中运行时会有什么不同的事情发生。在云端使用MySQL至少有两种主流的方法:在云服务器上安装MySQL,或者使用DBaaS服务。MySQL能够在云主机.上运行得很好,但云环境中的限制常常会导致更早需要进行数据拆分。并且尽管云服务器看起来和你的物理硬件很相似,但可能性能和服务质量要更低。
第十四章:应用层优化
第14章解释了什么是全方位的优化(ul-stack optimization),就是从前端到后端的整体优化,从用户体验开始直到数据库。即使是世界上设计最好、最具可扩展性的架构,如果停电会导致彻底崩溃,无法抵御恶意攻击,解决不了应用的bug和程序员的错误,以及其他一些灾难场景,那就不是什么好的架构。
第十五章:备份与恢复
第15章讨论了MySQL数据库各种备份与恢复的场景。这些策略可以帮助读者减少在各种不可抗的硬件失效时的宕机时间,保证在各种灾难下的数据最终可恢复。
第十六章:MySQL用户工具
第16章探索了一些可以帮助用户更有效地管理和监控MySQL服务器的工具,有些是开源的,也有些是商业的。好的工具对管理MySQL至关重要。推荐使用一些已经可用、广泛测试过、流行的工具。
最后,希望关于MySQL内部原理的知识能够帮助大家解决本篇没有覆盖到的一些情况。更希望朋友们能培养发现新问题的洞察力,能学习和实践合理的方式来设计、维护和诊断基于MySQL的系统。