《MySQL技术内幕:InnoDB存储引擎第2版》——1.2 MySQL体系结构

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本节书摘来自华章计算机《MySQL技术内幕:InnoDB存储引擎第2版》一书中的第1章,第1.2节,作者:姜承尧著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2 MySQL体系结构

由于工作的缘故,笔者的大部分时间需要与开发人员进行数据库方面的沟通,并对他们进行培训。不论他们是DBA,还是开发人员,似乎都对MySQL的体系结构了解得不够透彻。很多人喜欢把MySQL与他们以前使用的SQL Server、Oracle、DB2作比较。因此笔者常常会听到这样的疑问:
?为什么MySQL不支持全文索引?
?MySQL速度快是因为它不支持事务吗?
?数据量大于1000万时MySQL的性能会急剧下降吗?
……
对于MySQL数据库的疑问有很多很多,在解释这些问题之前,笔者认为不管对于使用哪种数据库的开发人员,了解数据库的体系结构都是最为重要的内容。
在给出体系结构图之前,用户应该理解了前一节提出的两个概念:数据库和数据库实例。很多人会把这两个概念混淆,即MySQL是数据库,MySQL也是数据库实例。这样来理解Oracle和Microsoft SQL Server数据库可能是正确的,但是这会给以后理解MySQL体系结构中的存储引擎带来问题。从概念上来说,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合;数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。
如果这样讲解后读者还是不明白,那这里再换一种更为直白的方式来解释:数据库是由一个个文件组成(一般来说都是二进制的文件)的,要对这些文件执行诸如SELECT、INSERT、UPDATE和DELETE之类的数据库操作是不能通过简单的操作文件来更改数据库的内容,需要通过数据库实例来完成对数据库的操作。所以,用户把Oracle、SQL Server、MySQL简单地理解成数据库可能是有失偏颇的,虽然在实际使用中并不会这么强调两者之间的区别。
好了,在给出上述这些复杂枯燥的定义后,现在可以来看看MySQL数据库的体系结构了,其结构如图1-1所示(摘自MySQL官方手册)。image

从图1-1可以发现,MySQL由以下几部分组成:
?连接池组件
?管理服务和工具组件
?SQL接口组件
?查询分析器组件
?优化器组件
?缓冲(Cache)组件
?插件式存储引擎
?物理文件
从图1-1还可以发现,MySQL数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎。MySQL插件式的存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是每个数据库系统本身都必需的,如SQL分析器和优化器等,而存储引擎是底层物理结构的实现,每个存储引擎开发者可以按照自己的意愿来进行开发。
需要特别注意的是,存储引擎是基于表的,而不是数据库。此外,要牢记图1-1的MySQL体系结构,它对于以后深入理解MySQL数据库会有极大的帮助。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
|
11天前
|
存储 SQL 关系型数据库
【MySQL技术内幕】6.3-InnoDB中的锁
【MySQL技术内幕】6.3-InnoDB中的锁
146 57
|
2天前
|
存储 关系型数据库 MySQL
|
1天前
|
存储 关系型数据库 MySQL
关系型数据库mysql的InnoDB
【6月更文挑战第17天】
11 3
|
7天前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第一篇(存储引擎与Linux系统上安装MySQL数据库)
MySQL数据库进阶第一篇(存储引擎与Linux系统上安装MySQL数据库)
|
11天前
|
存储 SQL 关系型数据库
【MySQL技术内幕】6.5-锁问题、阻塞、死锁、锁升级
【MySQL技术内幕】6.5-锁问题、阻塞、死锁、锁升级
37 2
|
11天前
|
SQL 存储 算法
【MySQL技术内幕】6.4-锁的算法
【MySQL技术内幕】6.4-锁的算法
23 1
|
1天前
|
存储 关系型数据库 MySQL
关系型数据库MySQL的MyISAM
【6月更文挑战第17天】
18 11
|
2天前
|
存储 关系型数据库 MySQL
|
2天前
|
SQL 关系型数据库 MySQL