了解掌握MySQL数据库的架构设计、文件系统,有利于更全面、系统的掌握MySQL数据库,是进阶精通MySQL的必修课 。
MySQL逻辑架构总体分为客户端连接器(Connectors)和服务器端(MySQL Server)两大部分 。应用程序客户端或可视化数据库客户端通过提供的连接器连接到服务端来使用MySQL提供的服务 。
架构图
整体架构分为客户端连接器(Connectors)和服务器端(MySQL Server)两大部分 。其中服务器端分为3层,包括SQL层、可拔插存储引擎层、文件系统(物理结构),核心在SQL层、可拔插存储引擎层 。
文章插图
MySQL逻辑架构图
客户端(Connectors)
即连接器Connectors,包括MySQL提供的原生C语言API、实现了JDBC的连接器驱动程序等 。基本上,大部分编程语言都实现了连接MySQL数据库的程序包,通过这些程序包连接到MySQL数据库的程序或应用,也可以认为是MySQL的客户端 。
- Native C API
- JDBC
- ODBC
- .NET
- php
- Python
- Perl
- Ruby
服务器端主要由SQL层、可拔插存储引擎层、文件系统三部分 。
其中SQL层(SQL Layer)包含以下6个组件
- 系统管理和控制工具(Management Services & Utilities )MySQL提供的一些系统管理工具,比如mysql、mysqladmin等命令行工具
- 连接池(Connection Pool)连接池组件负责身份认证authentication、连接池的实现(线程复用、连接限制)、检查内存,缓存等
- SQL接口(SQL Interfaces)实现各种语句DDL、DML等,以及存储过程、函数、触发器、视图等接口,负责命令分发
- 解析器(Parser)解析SQL语句,负责对SQL语句的词法和语法解析,形成初级语法树
- 优化器(Optimizer)对初级语法树进行优化,生成计划,选择合理的索引
- 缓存和缓冲(Caches & Buffers)缓冲提交的SQL请求等;对查询结果进行缓存,如果有开启 。8.0版本后,缓存Cache已弃用 。
CREATE TABLE tb_name(columns) ENGINE=InnoDB|MyISAM|Memory
以下是MySQL支持的常见引擎文章插图
MySQL支持的常见引擎
在5.7版本中,CREATE TABLE语句创建表时默认使用的存储引擎为InnoDB,可以省略指定 。目前使用比较多的存储引擎包括InnoDB和MyISAM 。InnoDB与MyISAM的区别如下表所示,开发人员可以按照业务需求使用不同的引擎
文章插图
InnoDB与MyISAM的区别
一般情况下,InnoDB、MyISAM、Memory等几个存储引擎可以满足大部分的一个应用场景 。下面是这三个存储引擎的使用场景或选型依据
- InnoDB
- MyISAM
- Memory
注意,因为存储引擎是作用在表上的,所以同一个数据库,可以使用多个存储引擎,即不同的表可以有不同的存储引擎 。如果一个表要求比较高的事务处理,可以选择InnoDB;而查询比较高的表,可以使用MyISAM;如果该数据库需要一个用于查询的临时表,也可以考虑使用Memory存储引擎 。总之,根据不同的一个用场景,可以使用一种存储引擎或多种存储引擎组合使用 。
文件系统
- 数据文件
- 日志文件
执行流程下图是MySQL执行一条语句的简单流程图
文章插图
简单流程图
物理架构即文件系统,MySQL的文件组织架构 。MySQL是通过文件系统对数据和索引进行存储的 。从物理结构可以分为数据索引文件和日志文件两大类 。其中,数据索引文件采用随机IO的方式写入磁盘存储,日志文件采用顺序IO方式写入磁盘存储 。两种写入磁盘的方式对比如下
推荐阅读
- 茶百科之金奖惠明茶,金奖惠明茶冲泡方式及品饮茶香
- 如何在mysql 造1亿条记录的大容量数据表?
- 茶百科之永春佛手,永春佛手茶色泽深绿色
- SSL泛域名证书?免费生成!
- MySQL进阶之配置文件说明
- 10分钟完成MySQL对emoji的支持
- Netty组件之Channel实例化
- 在淘宝退货退款,一般什么时候收到退款 淘宝退款是收到货物之后才退款吗
- 茶山谱之勐海勐宋,勐宋茶山之大曼吕
- 茶文化之潮汕文化,枣庄市茶文化研究会召开第届会员代表大会