Mysql的体系结构

一、MySql体系架构

Mysql体系架构,主要由以下几部分组成:

  • 连接池:用户连接维护及管理,提升访问性能。角色权限认证。大多数基于网络的客户端 / 服务端的程序都有类似的结构。主要为了连接复用。
    在这里插入图片描述
  • 管理工具和服务:系统管理和控制工具,例如备份恢复、Mysql 复制、集群 等
  • sql接口:接收用户的sql命令,并且返回sql执行后的结果
  • 解析器:对sql进行解析,语法验证,解析称为内部的数据结构(解析树)
  • 优化器:对用户书写的sql进行优化,如索引的选择,表的读取顺序等。
  • 缓存:对结果进行缓存,包含表缓存,记录缓存,权限缓存,key缓存等。
  • 插件式存储引擎:开发者可以选择合适的存储引擎,也可以定制化开发存储引擎,存储引擎是基于表的,不是数据库。
  • 物理文件:mysql中的数据最终会持久化到文件中。

二、Mysql的存储引擎

查看当前版本数据库提供的存储引擎
Mysql的体系结构_第1张图片

1、 MEMORY

memory存储引擎正如其名,数据在内存中,表结构在磁盘中,断电数据就会丢失。支持hash索引,而且基于内存因此查找速度特别快。Memroy 表是表级锁,因此并发 写入的性能较低。它不支持 BLOB 或 TEXT 类型的列,并且每行的长度是固定的, 所以即使指定了 VARCHAR 列,实际存储时也会转换成 CHAR,这可能导致部分 内存的浪费。

2 、CSV

可以将CSV文件当作Mysql的表来处理,方便在运行时导入和导出文件。将CSV格式的数据文件放在mysql的数据目录下,就可以在mysql中打开并且使用。

3、BLACKHOLE

正如其名,该存储引擎会丢弃所有让其存储的数据,不做任何保存,但是会记录日志,因此可以用于主从拷贝,或者只是简单的记录日志。

4、MYISAM

5.1之前默认的存储引擎,提供了大量的特性,包含全文索引,空间函数,但是不支持事务且仅支持表锁。对于一些对数据一致性不是严格要求且读大于写的场景可以选择使用。数据文件和索引文件归于不同的文件中,而且可以进一步压缩数据文件。

5、INNODB

InnoDB 是 5.1之后MySQL 的默认事务型引擎,也是最重要、使用最广泛的存储引擎。它被设计用来处理大量的短期(short-lived)事务,短期事务大部分情况是正常提交 的,很少会被回滚。InnoDB 的性能和自动崩溃恢复特性,使得它在非事务型存 储的需求中也很流行。除非有非常特别的原因需要使用其他的存储引擎,否则应 该优先考虑 InnoDB 引擎。innodb通过多版本并发控制获得高并发能力,使用邻键锁避免幻读。另外引入了插入缓冲,二次写,自适应hash索引,预读等高性能,高可用的功能。innodb的数据存储,采取聚集的方式,按照主键的顺序依次存储,如果没有定义主键,会使用隐藏列中的ROWID作为主键。

查看默认的存储引擎:show variables like ‘%storage_engine%’;
在这里插入图片描述

三、一条简单的查询sql的执行步骤

select * from table where id = 100;
  • 连接器:首先是建立连接,通过TCP三次握手,与数据库建立网络链接,数据库对用户名和密码进行校验认证。
  • 缓存:执行select语句,首先查询server层的缓存,如果缓存命中,直接返回,否则,执行后面的阶段。
  • 分析器:对sql语句进行词法分析,语法分析,语义分析,再确定sql语句没有错误后,执行后面的步骤。
    -优化器: 对用户写的sql语句进行优化,。
  • 执行器:优化完后,进行真正的执行。然后将执行的结果返回。

你可能感兴趣的:(数据库学习,mysql)