浅谈MySQL架构体系

一 :数据库和数据库实例

在MySQL的学习研究中,存在两个很是容易混淆的概念,即数据库和数据库实例。在MySQL中,数据库和数据库实例定义以下:php

数据库:存储数据的集合;java

数据库实例:操做数据库的集合。数据库

如上定义很清楚了,数据库是用来存储数据的,数据库实例是用来操做数据的,从操做系统的角度,数据库实例表现为一个进程,对应多个线程,缓存

在非集群数据库架构中,数据库与数据库实例存在一 一对应关系,在数据库集群中,可能存在多个数据库实例操做一个数据库状况,即多对一关系。安全

二:  MySQL基架

对于MySQL来讲,虽然经历了多个版本迭代(MySQL5.5,MySQL 5.6,MySQL 5.7,MySQL 8),但每次的迭代,都是基于MySQL数据结构

基架的,MySQL基架大体包括以下几大模块组件:架构

(1)MySQL向外提供的交互接口(Connectors)分布式

(2)管理服务组件和工具组件(Management Service & Utilities)微服务

(3)链接池组件(Connection Pool)工具

(4)SQL接口组件(SQL Interface)

(5)查询分析器组件(Parser)

(6)优化器组件(Optimizer)

(7)缓存主件(Caches & Buffers)

(8)插件式存储引擎(Pluggable Storage Engines)

(9)物理文件(File System)

(一)MySQL向外提供的交互接口(Connectors)

Connectors组件,是MySQL向外提供的交互组件,如java,.net,php等语言能够经过该组件来操做SQL语句,实现与SQL的交互。

(二)管理服务组件和工具组件(Management Service & Utilities)

提供对MySQL的集成管理,如备份(Backup),恢复(Recovery),安全管理(Security)等

(三)链接池组件(Connection Pool)

负责监听对客户端向MySQL Server端的各类请求,接收请求,转发请求到目标模块。每一个成功链接MySQL Server的客户请求都会被

建立或分配一个线程,该线程负责客户端与MySQL Server端的通讯,接收客户端发送的命令,传递服务端的结果信息等。

(四)SQL接口组件(SQL Interface)

接收用户SQL命令,如DML,DDL和存储过程等,并将最终结果返回给用户。

(五)查询分析器组件(Parser)

首先分析SQL命令语法的合法性,并尝试将SQL命令分解成数据结构,若分解失败,则提示SQL语句不合理。

(六)优化器组件(Optimizer)

对SQL命令按照标准流程进行优化分析。

(七)缓存主件(Caches & Buffers)

缓存和缓冲组件

(八)MySQL存储引擎

1.什么是MySQL存储引擎

MySQL属于关系型数据库,而关系型数据库的存储是以表的形式进行的,对于表的建立,数据的存储,检索,更新等都是由MySQL

存储引擎完成的,这也是MySQL存储引擎在MySQL中扮演的重要角色。

研究过SQL Server和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存储引擎比较

(九)物理文件(File System)

实际存储MySQL 数据库文件和一些日志文件等的系统,如Linux,Unix,Windows等。

三 :一个查询流程图

若是想免费学习Java工程化、高性能及分布式、深刻浅出。微服务、Spring,MyBatis,Netty源码分析的朋友能够加个人Java进阶群:552391552,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给你们。


关注公众号,了解更多架构知识

相关文章
相关标签/搜索