GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了

MySQL作为目前互联网工作的主流数据库,有着不容撼动的地位。DB-Engines这个排名在业界引用得非常多,权威性也很高,排名前三依然是Oracle、MySQL、Microsoft sQL Server。MySQL是20世纪90年代出来的数据库,整个架构上吸取了其他数据库的一些优良特性,也去除了不好的地方,整个架构比较稳定、比较简洁。MySQL的架构可以在多种不同的场景中应用,Facebook、Twitter、Google、腾讯、阿里等都在大量使用MySQL存储海量数据。

最近学习发现一本腾讯架构师出版非常火的【MySQL性能优化和高可用架构实践】手册,独乐乐不如众乐乐,现在就把它分享出来

该笔记共分为13个部分

目录

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第1张图片

由于内容篇幅过多,下面会给大家展示一下其中的部分内容!

目录

  • InnoDB存储引整体系结构
  • MySQL事务和锁
  • SLQ语言性能优化

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第2张图片

  • MySQL服务器优化
  • MySQL性能监控
  • MySQL主从复制详解
  • PXC高可用解决方案

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第3张图片

  • 基于MHA实现的MySQL.自动故障转移集群
  • MySQL Group Replication
  • Keepalived+双主复制的高可用架构
  • 数据库分库分表与中间件介绍
  • Mycat中间件详解

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第4张图片

总览内容

MySQL架构介绍

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第5张图片

目前业界的MySQL主流分支版本有Oracle官方版本的MySQL、Percona Server、MariaDB。接下来看一下各个分支的特点。

InnoDB存储引擎体系结构

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第6张图片

从MySQL 5.5版本开始,InnoDB是默认的表存储引擎,特点是支持事务、支持数据行锁、支持多版本并发MVCC、支持外键。InnoDB存储引擎的体系结构如图2-1所示,包括内存池、后台线程和底层的数据文件

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第7张图片

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第8张图片

MySQL事务和锁

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第9张图片

MySQL事务隔离级别

事务还会通过锁机制满足隔离性。在InnoDB存储引擎中,有不同的隔离级别,它们有着不同的隔离性。

锁等待

锁等待是指一个事务过程中产生的锁,其他事务需要等待上一个事务释放它的锁才能占用该资源。如果该事务一直不释放,就需要持续等待下去,直到超过了锁等待时间,会报一个等待超时的错误。在MySQL中通过innodb_lock_wait_timeout参数来控制锁等待时间,单位是秒。如图3-9所示,可以通过语句show variables like '%innodb_lock_wait%'来查看锁等待超时时间。

SQL语句性能优化

说起SQL语句性能优化,相信所有人都了解一些简单的技巧:不使用SELECT *、不使用NULL字段、合理地使用索引、为字段选择恰当的数据类型等。你是否真的理解这些优化技巧?是否理解其背后的工作原理?本章从理论和实战角度出发,讲解这些优化建议背后的原理。

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第10张图片

创建高性能索引

索引是提高MySQL查询性能的一个重要途径。应当尽量避免事后才想起添加索引,因为事后可能需要监控大量的SQL才能定位到问题所在,而且增加索引的时间肯定是远大于初始增加索引所需要的时间。

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第11张图片

MySQL服务器全面优化

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第12张图片

绝大多数使用Linux操作系统的大中型互联网网站都在使用MySQL作为后端的数据库服务,所以如何优化MySQL服务器是我们要研究的。现在MySQL 5.7版本对于多核CPU、固态硬盘、锁机制有着更好的优化。另外,MySQL 5.7版本对优化器提升了很多,比如MySQL 5.7的in语句子查询能够使用index range scan方式,Union all不再产生临时表,排序效率上也有所提升。我们从MySQL 5.7版本的存储引擎增强,硬件、操作系统、配置参数优化、设计规范优化几个层面来全面优化MySQL服务器

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第13张图片

MySQL性能监控

MySQL被越来越多的企业接受。随着企业发展,MySQL存储数据日益膨胀,性能分析、监控预警显得非常重要。在某些场景下,通常会部署一套MySQL监控/图形工具,然后根据MySQL监控面板提供的信息来执行进一步的调优。

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第14张图片

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第15张图片

MySQL主从复制详解

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第16张图片

MySQL的主从复制功能是构建基于MySQL数据库的高可用、高性能的应用程序基础,既能用于分担主数据库的读负载,也为高可用HA等工作提供了更多的支持。主从复制是指数据可以从一个MySQL数据库服务器主节点复制到另外一个或多个MySQL数据库服务器从节点。主从复制可以用于数据实时备份、读写分离、高可用HA等企业场景中。

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第17张图片

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第18张图片

PXC高可用解决方案

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第19张图片

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第20张图片

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第21张图片

基于MHA实现的MySQL自动故障转移集群

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第22张图片

MHA是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。由两部分组成:MHAManager(管理节点)和MHA Node(数据节点),如图9-1所示。MHA Manager可以独立部署在一台独立的机器上管理多个master-slave主从复制集群,也可以部署在一台slave从节点上。

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第23张图片

MySQL Group Replication

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第24张图片

长期以来MySQL官方都缺少原生的MySQL集群多活且能提供强一致性的解决方案,所以第三方公司基于Galera协议的Percona XtraDB Cluster(PXC)积累了很多客户案例。 2016年12月12日Oracle发布了MySQL Group Replication的首个GA版本,并且提供了自家对比Galera的性能测试。MGR作为官方力推的明星产品,的确具备了与市场老牌产品(如PXC)竞争的资格。MGR是基于Paxos分布式一致性协议的高可用解决方案,完美地解决了MySQL在一致性与高可用方面的缺陷。未来MGR方案大概率将成为银行、保险、证券等金融业务的高可用和容灾解决方案。

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第25张图片

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第26张图片

Keepalived+双主复制的高可用架构

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第27张图片

GitHub点赞70.3k 「MySQL性能架构成长笔记」爆火了_第28张图片

你可能感兴趣的:(mysql,架构,后端,学习,java)