性能问题
这个世界是由问题组成的,理想的状态和实际状态之间的差异造成了问题。国家领导解决人民生活幸福的大问题,公司的总经理解决盈利的问题,而本书只想解决MySQL数据库性能这么一一个“小问题”。
从某种程度来说,MySQL数据库性能优化的问题是-一个并行的问题,归根结底是锁和资源争用的问题。
- 数据库的性能优化首先是计算机系统的优化。数据库程序是运行在计算机系统上的应用程序,需要先优化的就是计算机系统。也就是说,让硬件尽量均衡,操作系统充分发挥硬件的全部性能,而数据库充分利用操作系统和文件系统提供的便利发挥全部性能,而且避免资源的相互竞争。
- 数据库的性能优化其次是SQL语句的优化。上层 应用都通过SQL语句与数据库打交道,一条SQL语句为了获取数据可以有几十甚至上百种执行计划,数据库会通过优化器选择更优的SQL执行计划,但是MySQL在执行计划上远远落后于商业数据库,甚至在一些方面相比PostgreSQL也差很多,那么怎么写出正确的SQL语句,避免MySQL选择错误的执行计划,以及怎样通过增加索引、设置参数让:MySQL的执行计划更优,这就是优化SQL语句需要关心的事情。
- 最后,数据库的性能优化最有效的是架构的优化。对于读多写少的应用程序,可以设计为读写分离,把允许延迟的读请求主动分发到备库;对于秒杀型的业务,可以先在内存型key-value存储系统筛选再发往数据库持久化,避免对数据库的冲击;对于汇总、聚合类的应用,可以采用列式存储引擎或者专门的大数据平台;对于监控类的应用,可以采用时序数据库,等等。
以上三种优化思路贯穿本书,这也是本书名为《千金良方: MySQL性能优化金字塔法则》的缘由。
内容介绍
MySQL的火热程度有目共睹,如果需要了解MySQL的安装、启动、配置等基础知识,市面上相关的书籍已是汗牛充栋。本书则尽量深入细致地介绍MySQL的基本原理,以及性能优化的实际案例。
本书既有涉及体系结构、PFS、I S、统计信息、复制、锁、InnoDB等基础知识的铺垫(其实并不基础),又有众多案例详解,内容丰富、翔实,是难得一见的MySQL性能优化参考书,建议每位DBA以及从事MySQL相关应用开发的读者都读一读。
目录(本文内容较多,建议大家耐心观看)
全书一共分为3篇:基础篇、案例篇和工具篇。
由于篇幅限制小编,小编只在这里给大家展示目录及部分内容,有需要完整文档的程序猿(媛)可以帮忙转发+关注文末公众号获取
“基础篇”
信息论认为消除一件事情的不确定性就是获取足够多的信息。我们认为任何优化都可以从了解它的基本原理和设计思路开始。
“基础篇”从理论基础和基本原理层面介绍了MySQL的安装与配置、升级和体系结构,information_ schema、 sys_ schema、performance_ schema和mysql_ _schema, MySQL复制,MySQL事务,SQL语句优化及架构设计基础知识。希望读者通过对这些内容的学习,能够深入细致地了解MySQL各方面的基础知识。
第1章MySQL初始化安装、简单安全加固
第2章MySQL常 用的两种升级方法
第3章MySQL体系结构
第4章performance_ schema初相识
第5章performance schema配置详解
第6章performance_ schema应用示例荟萃
第7章sys系统库初相识
第8章sys系统库配置表
第9章sys系统库应用示例荟萃
第10章information_ schema初相识
第11章information schema应用示例荟萃
第12章mysq|系统库之权限系统表
第13章mysq|系统库之访问权限控制系统
第14章mysq|系统库之统计信息表
第15章mysq|系统库之 复制信息表
第16章mysq|系统库之 日志记录表
第17章mysq|系统库应 用示例荟萃
第18章复制技术的演进
第19章事务概念基础
第20章InnoDB锁
第21章SQL优化
第22章MySQL读写扩展
“案例篇”
由于篇幅限制小编,阿里DBA骨干团队编写的792页MySQL调优笔记的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!不会只有大纲和目录,有需要的程序猿(媛)可以帮忙转发+关注文末公众号获取
计算机是种实验的科学,性能优化 是实战的艺术。
"案例篇”从硬件和系统、MySQL架构等方面给出了性能优化的十几个案例,包括:性能测试的基本优化思路和最需要关注的性能指标解释、对日常SQL语句执行慢的基本定位、避免x86可用性的一般性方法、节能模式会怎样影响性能、IO存储作为数据库最重要的依赖是如何影响数据库性能的、主备复制不一致可能有哪些原因、字符集不一致会造成哪些性能问题、在实际场景中锁的争用是怎样的。希望读者通过这些案例,可以深入细致地理解“基础篇”中的各种概念,融会贯通,对MySQL有一个全面的、系统的掌握。
第23章性能测试指标和相关术语
第24章历史问题诊断和现场故障分析
第25章性能调优金字塔
第26章SQL语句执行慢真假难辨
第27章如何避免三天两头换硬盘、 内存、主板
第28章每隔45天的MySQL性能低谷
第29章MySQL连接无法自动释放
第30章查询MySQL偶尔比较慢
第31章MySQL 最多只允许214个连接
第32章MySQL挂起诊断思路
第33章硬件和系统调优
第34章并发删除数据造成死锁
第35章删除不存在的数据造成死锁
第36章插入意向锁死锁
第37章分页查询优化
第38章子查询优化——子查询转换为连接
第39章子查询优化——使用delete删除数据
“工具篇”
“工欲善其事,必先利其器。”我们日常需要借助-些工具来做性能优化。
“工具篇”介绍了在MySQL性能优化过程中需要用到的各种工具,包括: dmidecode、 top、 dstat等 硬件和系统排查工具;FIO、sysbench、 HammerDB 等压力测试工具; mysqldump、 XtraBackup等备份工具; Percona、 innotop、 Prometheus等监控工具。希望读者可以借助更多自动化的方式去验证和评估性能优化解决方案,提升性能。
第40章硬件规格常用查看命令详解
第41章系统负载常用查看命令详解
第42章FIO存储性能压测
第43章HammerDB在线事务处理测试
第44章sysbench数据库压测工具
第45章mysqladmin和innotop: I具详解
第46章利用Prometheus + Grafana搭建炫酷的MySQL监控平台
第47章Percona Toolkit常用工具详解
第48章MySQL主流备份工 具之mysqldump详解
第49章MySQL 主流备份工具之XtraBackup详解
第50章MySQL主流备份工 具之mydumper详解
第51章MySQL主流闪回工 具详解
读者对象
- MySQL初学者。建议按照顺序从本书的“基础篇"开始阅读。“基础篇"介绍了从安装部署、基础配置到性能诊断等日常工作需要了解的内容。在熟悉了MySQL的基本概念和大致原理以后,在阅读"案例篇”时,对问题的定义和解决方案才能理解得更加透彻。最后在阅读“工具篇”时,也可以学习到MySQL DBA日常工作所需工具的使用方法和应用场景。
- 专门从事MySQL工作1~3年的开发人员和运维人员。对于有一些MySQL开发和运维经验的人员,建议先跳过“基础篇”,直接从“案例篇"开始阅读。在“案例篇”中了解了具体的问题现象、故障处理的过程和方法以后,联系案例中对应的“基础篇"和“工具篇"知识进行阅读,这样能帮助你把很多知识点串联起来,由点到面形成更为全面的MySQL知识体系。
- 资深的MySQL DBA。 本书可以作为案头书,在解决问题时,如果记不清某些概念或者细节比较模糊,则可以拿来参考。
领取文章中的792页阿里DBA骨干团队编写的MySQL调优笔记,只需要:
——对文章将进行转发+评论,关注下方公众号获取即可。