美文网首页
MySQL架构逻辑与存储引擎

MySQL架构逻辑与存储引擎

作者: Doooook | 来源:发表于2020-11-17 21:41 被阅读0次

逻辑架构图

image.png

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

Connectors组件,是MySQL向外提供的交互组件,指的是不同语言中与SQL的交互,如Java,.NET,PHP等语言可以通过该组件来操作SQL语句,实现与SQL的交互。

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

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

三、连接池组件(Connection Pool)

  • 管理缓冲用户连接,线程处理等需要缓存的需求。
  • 负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理模块。每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。
  • 而连接线程的主要工作就是负责 MySQL Server 与客户端的通信,接受客户端的命令请求,传递 Server 端的结果信息等。线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的 cache 等。

四、SQL接口组件(SQL Interface)

接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface

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

SQL命令传递到解析器的时候会被解析器验证解析
主要功能:
a. 将SQL语句进行语义和语法的分析,分解成数据结构,然后按照不同的操作类型进行分类,然后做出针对性的转发到后续步骤,以后SQL语句的传递和处理就是基于这个结构的。
b. 如果在分解过程中遇到错误,那么就说明这个sql语句是不合理的。

六、优化器组件(Optimizer))

SQL语句在查询之前会使用查询优化器对查询进行优化。explain语句查看的SQL语句执行计划,就是由查询优化器生成的。

七、缓存主件(Caches & Buffers)

他的主要功能是将客户端提交给MySQL的 select请求的返回结果集 cache 到内存中,与该 query 的一个 hash 值做一个对应。该 Query 所取数据的基表发生任何数据的变化之后, MySQL 会自动使该 query 的Cache 失效。在读写比例非常高的应用系统中, Query Cache 对性能的提高是非常显著的。当然它对内存的消耗也是非常大的。
如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等。

八、MySQL存储引擎(Pluggable Storage Engines)

与其他数据库例如Oracle 和SQL Server等数据库中只有一种存储引擎不同的是,MySQL有一个被称为“Pluggable Storage Engine Architecture”(可插拔的存储引擎架构)的特性,也就意味着MySQL数据库提供了多种存储引擎。
而且存储引擎是针对表的,用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。也就是说,同一数据库不同的表可以选择不同的存储引擎。
简而言之,存储引擎就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
其中,比较常用的存储引擎包括InnoDB存储引擎,MyISAM存储引擎和Momery存储引擎。

MySQL存储引擎种类

MySQL的存储引擎是针对表进行指定的。


image.png

查看MySQL存储引擎

show engines;
image.png

InnoDB和MyISAM存储引擎的区别

image.png

存储引擎的选型
InnoDB:支持事务处理支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。
MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,不需要持久保存,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据
库只使用在相对较小的数据库表。
注意,同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY
存储引擎。

相关文章

  • 高性能MySQL读书笔记一

    MySQL服务器逻辑架构 MySQL的存储引擎架构将查询处理与数据的存储/提取相分离。下面是MySQL的逻辑架构图...

  • Mysql三层逻辑架构

    MySQL的存储引擎架构将查询处理与数据的存储/提取相分离。下面是MySQL的逻辑架构图: 下面来讲解每部...

  • mysql优化篇助你成为数据库高手

    MySql理论 逻辑架构 连接层-->服务层-->引擎层-->存储层 存储引擎 查看方式 1.查看mysql现在提...

  • MySQL-存储引擎

    零、本文纲要 一、MySQL存储引擎 二、InnoDB存储引擎1、InnoDB逻辑存储结构2、InnoDB架构3、...

  • MySQL之InnoDB和MyISAM存储引擎

    存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取。MySQL存储引擎有很多,不同的存...

  • MySQL深入学习

    mysql 1.存储引擎 1.1.mysql逻辑架构 Connectors:C,PHP,JDBC,ODBC,.NE...

  • 高性能MySQL第1章 MySQL架构与历史

    http://www.highperfmysql.com/ 1.1MySQL逻辑架构 存储引擎架构的设计将查询处理...

  • MySQL架构逻辑与存储引擎

    逻辑架构图 一、MySQL向外提供的交互接口(Connectors) Connectors组件,是MySQL向外提...

  • mysql

    存储引擎架构 mysql最nb的特征是它的存储引擎架构,这种架构可以将查询处理与各类服务器任务与数据的存储/提取相...

  • MySQL技术内幕 :InnoDB存储引擎(第二版)

    MySQL架构 MySQL是一个单进程多线程架构的数据库 存储引擎 InnoDB存储引擎 MySQL5.5.8之后...

网友评论

      本文标题:MySQL架构逻辑与存储引擎

      本文链接:https://www.haomeiwen.com/subject/qwyfiktx.html