当前位置: 首页 > 科技观察

MySQL底层架构大揭秘,远不止写SQL那么简单!

时间:2023-03-16 10:37:10 科技观察

1.数据库和数据库实例在MySQL的学习和研究中,有两个很容易混淆的概念,即数据库和数据库实例。在MySQL中,数据库和数据库实例的定义如下:数据库:存储数据的集合;数据库实例:运行数据库的集合。上面的定义很明确,数据库是用来存储数据的,数据库实例是用来操作数据的。从操作系统的角度来看,数据库实例表现为一个进程,对应多个线程。在非集群数据库架构中,数据库和数据库Instance是一一对应的。在一个数据库集群中,可能有多个数据库实例在操作一个数据库,即多对一的关系。2、MySQL脚手架对于MySQL来说,虽然经历了多个版本迭代,但每次迭代都是基于MySQL脚手架。MySQL脚手架大致包括以下几大模块组件:MySQL对外提供的交互接口(Connectors)(ManagementService&Utilities)连接池组件(ConnectionPool)SQL接口组件(SQLInterface)查询分析器组件(Parser)OptimizerComponent(Optimizer)Caches&Buffers(PluggableStorageEngines)PhysicalFile(FileSystem)1.MySQL对外提供的交互接口(Connectors)。外部提供的交互组件,如java、.net、php等语言,可以通过该组件操作SQL语句,实现与SQL的交互。2、管理服务组件和工具组件(ManagementService&Utilities)提供对MySQL的集成管理,如备份(Backup)、恢复(Recovery)、安全管理(Security)等3、连接池组件(ConnectionPool)负责监听客户端向MySQLServer发送各种请求,接收请求,并将请求转发给目标模块。每个成功连接到MySQLServer的客户端请求都会创建或分配一个线程,负责客户端与MySQLServer的通信,接收客户端发送的命令,传递服务器的结果信息等。4、SQL接口组件(SQLInterface)接收用户SQL命令,如DML、DDL、存储过程等,并将最终结果返回给用户。5、查询分析器组件(Parser)首先分析SQL命令语法的合法性,并尝试将SQL命令分解为数据结构。如果分解失败,会提示SQL语句不合理。6、优化器组件(Optimizer)按照标准流程对SQL命令进行优化分析。7.Caches&Buffers缓存和缓冲组件8.MySQL存储引擎1.什么是MySQL存储引擎?MySQL是关系型数据库,关系型数据库的存储是以表的形式存在的。创建、数据存储、检索、更新等都是由MySQL存储引擎完成的,这也是MySQL存储引擎在MySQL中扮演的重要角色。研究过SQLServer和Oracle的读者可能很清楚,这两个数据库只有一种存储引擎,而MySQL有很多种存储引擎,比如MyISAM存储引擎、InnoDB存储引擎和Memory存储引擎。MySQL之所以有多个存储引擎,是由MySQL的开源决定的。从类型上来说,MySQL存储引擎大致可以归结为官方存储引擎和第三方存储。MySQL的开源特性使得第三方可以基于MySQL框架开发适合自己业务需求的存储引擎。2、MySQL存储引擎的作用MySQL存储引擎在MySQL中占有重要的地位。其比较重要的作用大致可以归结为以下两个方面:功能一:创建管理表、数据检索、索引创建等功能二:满足自定义存储引擎的开发。3.MySQL引擎类型不同类型的存储引擎在存储表时有不同的存储引擎表机制。从MySQL存储引擎的类型来看,可以分为官方存储引擎和第三方存储引擎。目前MySQL的存储引擎有很多,比如MyISAM存储引擎、InnoDB存储引擎、NDB存储引擎、Archive存储引擎、Federated存储引擎、Memory存储引擎、Merge存储引擎、Parter存储引擎、Community存储引擎、Custom存储引擎和其他存储引擎。其中,比较常用的存储引擎有InnoDB存储引擎、MyISAM存储引擎和Momery存储引擎。4、几种典型的MySQL存储引擎比较9、物理文件(FileSystem)是实际存储MySQL数据库文件和一些日志文件的系统,如Linux、Unix、Windows等三、查询流程图