核心内容摘要
携手同心,共创未来:男生女生,我们一起努力!
就在昨天我在百忙之中抽出空余时间面试了个腾讯30k出来的我开口就是MYSQL性能调优如何入手他的回答的基础优化、优化的哲学、优化需求、优化的思路、存储引擎层、数据库优化、等等细节好吧我承认我败了。
但是我严重怀疑他是做了准备而来的不然没有什么人可以记得这么清楚有条理果不其然在他入职之后说出了实情在他们团队内部有一本多名大佬推荐的【MySQL性能优化和高可用架构实践】文档好了话不多说小编直接分享出来学完你也可以在简历上写“精通MySQL性能优化”同时也希望各位可以多吊打一下其他面试官限于文章篇幅原因只能以截图的形式展示出来 有需要的小伙伴可以文末获取 目录InnoDB存储引整体系结构MySQL事务和锁SLQ语言性能优化MySQL服务器优化MySQL性能监控MySQL主从复制详解PXC高可用解决方案基于MHA实现的MySQL.自动故障转移集群MySQL Group ReplicationKeepalived双主复制的高可用架构数据库分库分表与中间件介绍Mycat中间件详解总览内容MySQL架构介绍目前业界的MySQL主流分支版本有Oracle官方版本的MySQL、Percona Server、MariaDB。
接下来看一下各个分支的特点。
InnoDB存储引擎体系结构从MySQL
5版本开始InnoDB是默认的表存储引擎特点是支持事务、支持数据行锁、支持多版本并发MVCC、支持外键。
InnoDB存储引擎的体系结构如图
所示包括内存池、后台线程和底层的数据文件MySQL事务和锁MySQL事务隔离级别事务还会通过锁机制满足隔离性。
在InnoDB存储引擎中有不同的隔离级别它们有着不同的隔离性。
锁等待锁等待是指一个事务过程中产生的锁其他事务需要等待上一个事务释放它的锁才能占用该资源。
如果该事务一直不释放就需要持续等待下去直到超过了锁等待时间会报一个等待超时的错误。
在MySQL中通过innodb_lock_wait_timeout参数来控制锁等待时间单位是秒。
如图
所示可以通过语句show variables like %innodb_lock_wait%来查看锁等待超时时间。
SQL语句性能优化说起SQL语句性能优化相信所有人都了解一些简单的技巧不使用SELECT *、不使用NULL字段、合理地使用索引、为字段选择恰当的数据类型等。
你是否真的理解这些优化技巧是否理解其背后的工作原理本章从理论和实战角度出发讲解这些优化建议背后的原理。
创建高性能索引索引是提高MySQL查询性能的一个重要途径。
应当尽量避免事后才想起添加索引因为事后可能需要监控大量的SQL才能定位到问题所在而且增加索引的时间肯定是远大于初始增加索引所需要的时间。
MySQL服务器全面优化绝大多数使用Linux操作系统的大中型互联网网站都在使用MySQL作为后端的数据库服务所以如何优化MySQL服务器是我们要研究的。
现在MySQL
7版本对于多核CPU、固态硬盘、锁机制有着更好的优化。
另外MySQL
7版本对优化器提升了很多比如MySQL
7的in语句子查询能够使用index range scan方式Union all不再产生临时表排序效率上也有所提升。
我们从MySQL
7版本的存储引擎增强硬件、操作系统、配置参数优化、设计规范优化几个层面来全面优化MySQL服务器MySQL性能监控MySQL被越来越多的企业接受。
随着企业发展MySQL存储数据日益膨胀性能分析、监控预警显得非常重要。
在某些场景下通常会部署一套MySQL监控/图形工具然后根据MySQL监控面板提供的信息来执行进一步的调优。
MySQL主从复制详解MySQL的主从复制功能是构建基于MySQL数据库的高可用、高性能的应用程序基础既能用于分担主数据库的读负载也为高可用HA等工作提供了更多的支持。
主从复制是指数据可以从一个MySQL数据库服务器主节点复制到另外一个或多个MySQL数据库服务器从节点。
主从复制可以用于数据实时备份、读写分离、高可用HA等企业场景中。
PXC高可用解决方案基于MHA实现的MySQL自动故障转移集群MHA是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。
由两部分组成MHAManager管理节点和MHA Node数据节点如图
所示。
MHA Manager可以独立部署在一台独立的机器上管理多个master-slave主从复制集群也可以部署在一台slave从节点上。
MySQL Group Replication长期以来MySQL官方都缺少原生的MySQL集群多活且能提供强一致性的解决方案所以第三方公司基于Galera协议的Percona XtraDB ClusterPXC积累了很多客户案例。
2016年12月12日Oracle发布了MySQL Group Replication的首个GA版本并且提供了自家对比Galera的性能测试。
MGR作为官方力推的明星产品的确具备了与市场老牌产品如PXC竞争的资格。
MGR是基于Paxos分布式一致性协议的高可用解决方案完美地解决了MySQL在一致性与高可用方面的缺陷。
未来MGR方案大概率将成为银行、保险、证券等金融业务的高可用和容灾解决方案。
Keepalived双主复制的高可用架构限于文章篇幅原因只能以截图的形式展示出来 有需要的小伙伴可以文末获取