阿里资深架构师:MySQL性能优化和高可用架构实践,含面试题及答案

本文详细介绍了MySQL的主流分支版本,包括Oracle官方MySQL、Percona Server和MariaDB,强调了InnoDB存储引擎在性能和事务处理上的优势。接着探讨了MySQL的存储引擎特性,如InnoDB的事务支持、行级锁和数据恢复能力,以及MyISAM和MEMORY引擎的特点。此外,文章还阐述了MySQL的逻辑架构,分为客户端层、SQL层和存储引擎层,并分析了各层的功能。最后,文章提及MySQL物理文件体系结构和InnoDB存储引擎的结构,并列举了一系列MySQL面试题,涵盖了数据库三范式、索引类型、复制原理等内容。
摘要由CSDN通过智能技术生成

目录

MySQL主流的分支版本

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

目前生产环境中主流的版本是MySQL 5.7,无论是在InnoDB存储引擎性能和功能上的提升还是安全性上的加固、复制功能、sys schema库的增强等都改进得相当出色。Oracle是8i、9i、10g、11g、12c这样的一个版本迭代速度;而MySQL从5.0、5.1、5.5、5.6直到目前最成熟的5.7都基于5这个大版本,升级其小版本。
针对不同的用户,MySQL分为两个版本:

1.MySQL Community Server(社区版):该版本完全免费,但是官方不提供技术支持。

2.MySQL Enterprise Server(企业版):该版本需要付费使用,多了企业级管理工具(备份、监视、审计等),官方提供电话技术支持。

让我们来看一下MySQL 5.5、5.6、5.7的性能对比图,这样可以更加直观地观察到这些年的发展变化。
在OLTP只读模式下,MySQL 5.7比MySQL 5.6快近3倍的速度,MySQL 5.6比MySQL 5.5快近1.5倍的速度,而且5.7有将近100万的QPS(每秒的查询量),如图1-1所示。

在OLTP读写模式下,MySQL 5.7比MySQL 5.6快近2.5倍的速度,比MySQL 5.5快近3倍的速度,而且5.7有近60万的QPS,如图1-2所示。

2.PerconaServer

Percona Server是MySQL重要的分支之一,由领先的MySQL咨询公司Percona发布。它基于InnoDB存储引擎的基础上提升了性能和易管理性,最后形成了增强版的XtraDB引擎,可以用来更好地发挥服务器硬件上的性能。所以,Percona Server也可以称为增强的MySQL与开源的插件(plugin)的结合。Percona团队的最终声明是“Percona Server是由Oracle发布的最接近官方MySQL Enterprise发行版的版本”。

Percona不仅提供了高性能XtraDB引擎,还提供了在生产环境中的DBA必备武器,诸如xtrabackup、percona-toolkit等。更重要的是还提供Percona XtraDB-Cluster这种支持多点写入的强同步高可用集群架构,真正实现数据一致性。Percona Server自己管理代码,不接受外部开发人员的贡献,以这种方式确保他们对产品中所包含功能的控制。
3.MariaDB

MariaDB是由MySQL创始人Monty创建的,主要由开源社区维护,采用GPL授权许可。甲骨文公司收购了MySQL后有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB直接利用来自Percona的XtraDB引擎,由于它们使用的是完全相同的引擎,因此每次使用存储引擎时没有显著的差别。

MySQL存储引擎

MySQL数据库及其分支版本主要的存储引擎有InnoDB、MyISAM、Memory等。简单地理解,存储引擎就是指表的类型以及表在计算机上的存储方式。存储引擎的概念是MySQL的特色,使用的是一个可插拔存储引擎架构,能够在运行的时候动态加载或者卸载这些存储引擎。不同的存储引擎决定了MySQL数据库中的表可以用不同的方式来存储。我们可以根据数据的特点来选择不同的存储引擎。

在MySQL中的存储引擎有很多种,可以通过SHOW ENGINES语句来查看,如图1-3所示。

在Support列中,YES表示当前版本支持这个存储引擎;DEFAULT表示该引擎是默认的引擎,即InnoDB。

下面重点关注InnoDB、MyISAM、MEMORY这3种。

(1)InnoDB存储引擎

①InnoDB是事务型数据库的首选引擎,支持事务ACID,简单地说就是支持事务完整性、一致性。

②InnoDB支持行级锁。行级锁可以在最大程度上支持并发,以及类似Oracle的一致性读、多用户并发。

③InnoDB是为处理巨大数据量的最大性能设计,InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。

④InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按照主键顺序存放,如果没有显式在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键。

⑤InnoDB支持崩溃数据自修复。InnoDB存储引擎中就是依靠redolog来保证的。当数据库异常崩溃后,数据库重新启动时会根据redolog进行数据恢复,保证数据库恢复到崩溃前的状态。

(2)MyISAM存储引擎
①MyISAM存储引擎不支持事务,所以对事务有要求的业务场景不能使用。

②其锁定机制是表级索引,虽然可以让锁定的实现成本很小,但是也同时大大降低了其并发性能。

③不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读。

④只会缓存索引:MyISAM可以通过key_buffer缓存,以大大提高访问性能减少磁盘I/O,但是这个缓冲区只会缓存索引,而不会缓存数据。

⑤适用于不需要事务支持(不支持)、并

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值