MySql架构

架构图

mysql是组态软件吗 mysql组件结构_数据库

MySql中有以下组件

  • 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存储引擎(Storage Engines)

对于表的创建,数据的存储,检索,更新等都是由MySQL存储引擎完成的,这也是MySQL存储引擎在MySQL中扮演的重要角色。

Mysql逻辑结构

Mysql逻辑结构比掌握知识:(分三层)

  1. 第一层负责连接处理,授权认证,安全等
  • 每个客户端连接都会在服务器进程中拥有一个线程,服务器维护了一个线程池,因此不需要为每一个新建的连接创建或者销毁线程。
  • 当客户端连接到Mysql服务器时,服务器对其进行认证,通过用户名和密码认证,也可以通过SSL证书进行认证。
  • 一旦客户端连接成功,服务器会继续验证客户端是否具有执行某个特定查询的权限。

2)第二层负责编译并优化SQL

  • 这一层包括查询解析,分析,优化,缓存以及所有的的内置函数。
  • 对于SELECT语句,在解析查询前,服务器会先检查查询缓存,如果能在其中找到对应的查询结果,则无需再进行查询解析、优化等过程,直接返回查询结果。
  • 所有跨存储引擎的功能都在这一层实现:存储过程,触发器,视图。

3)第三层是存储引擎

  • 存储引擎负责在MySQL中存储数据、提取数据。
  • 存储引擎通过API与上层进行通信,这些API屏蔽了不同存储引擎之间的差异,使得这些差异对上层查询过程透明。
  • 存储引擎不会去解析SQL,不同存储引擎之间也不会相互通信,而只是简单地响应上层服务器的请求。

MySql常用存储引擎

MySQL区别于其他数据库的一个最重要的特点是插件式存储引擎。它是基于表的,而不是数据库。MySql常用存储引擎如下:

InnoDB

  • 支持事务
  • 行锁设计
  • 支持外键
  • 支持MVCC,实现4种隔离级别
  • 表的行按照主键顺序存放
  • 最常用的数据库引擎。5.5后的默认引擎

MyISAM

  • 5.5前的默认
  • 不支持事务
  • 表锁设计
  • 只缓存索引文件,不缓存数据文件
  • 可以使用myisampack工具进一步压缩。但是压缩后只读。

NDB

  • 集群数据库
  • 数据放在内存
  • 支持高可用和高并发

Memory

  • 数据放在内存
  • Mysql临时表会用这个引擎
  • 不支持TEXT和BLOB字段。所以如果临时表要用到这两个字段,会使用MyISAM引擎,而该引擎不缓存数据在内存,所以性能会有影响。

Archive

  • 只支持INSERT SELECT操作
  • 压缩后存放
  • 适用于高速插入和压缩功能。例如日志的存储

Federated

  • 不存放数据,指向远程Mysql的表

MariaDB

MySQL的开源分支,兼容MySQL

  • 用于替换MyISAM
  • 支持缓存和索引
  • 行锁设计
  • MVCC功能