欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql学习(一):mysql基本架构及存储引擎

程序员文章站 2022-03-04 10:08:32
一、简介:MySQL 是最流行的关系型数据库管理系统,但是日常只会运用简单的增删改查,目前想深究一下mysql具体的原理,让自己的知识不只是停留在表面层次。二、安装mysql在linux的安装比较简单,这里的话推荐https://jingyan.baidu.com/article/4d58d5417ca1fc9dd5e9c05f.html,可以根据这个网址进行安装。三、具体架构1、逻辑结构 如下图,mysql的逻辑结构分为下面三层: ......

一、简介:

MySQL 是最流行的关系型数据库管理系统,但是日常只会运用简单的增删改查,目前想深究一下mysql具体的原理,让自己的知识不只是停留在表面层次。

二、安装

mysql在linux的安装比较简单,这里的话推荐https://jingyan.baidu.com/article/4d58d5417ca1fc9dd5e9c05f.html,可以根据这个网址进行安装。

三、具体架构

1、逻辑结构

   如下图,mysql的逻辑结构分为下面三层:

                                                                         mysql学习(一):mysql基本架构及存储引擎

第一层:最上层是大部分基于网络的C/S服务都有的部分,比如连接处理、授权认证、安全等;

第二层:mysql的核心业务层,,查询解析、分析、优化缓存以及所有的内置函数都在这一层完成,所有跨存储引擎的功能也都在这一层实现:存储过程、触发器、视图等等。

第三层:MySQL的最底层,包含了存储引擎(注:存储引擎负责MySQL中数据的存储和读取),服务器通过API和存储引擎进行通讯,而接口屏蔽了存储引擎之间的差异,对上层查询透明。

2、逻辑架构

如下图,mysql的逻辑架构图:

             mysql学习(一):mysql基本架构及存储引擎

连接器(Connectors):连接器,指的是不同语言中与SQL的交互。

SQL层:Management Services & Utilities(系统管理和控制工具)、Connection Pool(连接池)、SQL Interface(SQL接口)、Parser(SQL解析器)、Optomizer(SQL优化器)、Caches & Buffers(SQL查询缓存)。

1)、Connection Pool:管理用户连接,等待处理连接请求,负责监听对 MySQL Server 的各种请求。

2)、SQL Interface:接受用户的SQL命令,并且返回用户需要查询的结果。

3)、Parser:用于解析SQL,将SQ通过词法分析和语法分析生成正确的语法树,SQL命令传递到解析器的时候会被解析器验证和解析

4)、Optomizer:SQL语句在查询之前会使用查询优化器对查询进行优化explain语句查看的SQL语句执行计划,就是由

查询优化器生成的。

5)、Caches & Buffers:将SQL查询出的结果放入的缓存中,再次使用相同的查询sql时,会从缓存中直接拿,不用再次执行SQL,但SQL和数据有变化时,缓存清除,mysql8.0后不再使用。

可插拔存储引擎层(Pluggable Storage Engines):mysql存在多种数据引擎,并且数据引擎是表级别的,因此在创建表是指定数据引擎,不同的存储引擎有着不同的作用,影响性能。

文件系统(File system):用于存储mysql数据。

3、MySQL存储引擎种类

1)、存储引擎的分类:

存储引擎
说明
InnoDB mysql5.5之后的默认存储引擎,支持事务和行级锁,比MyISAM处理速度稍慢
MyISAM mysql5.5之前默认存储引擎,高速引擎,拥有较高的插入、查询速度,不支持事务和行级锁,支持表级锁
ISAM MyISAM的前身,mysql5.0以后不在默认安装
MRG_MyISAM(MERGE) 将多个表联合成一个表使用,在超大规模数据存储很有用
Memory
内存存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。只在内存上保存数据,意味着数据可能会丢失
Falcon
一种新的存储引擎,支持事物处理,传言可能是InnoDB的替代者
Archive
将数据压缩后进行存储,非常适合存储大量的独立的,作为历史记
录的数据,但是只能进行插入和查询操作
CSV
CSV 存储引擎是基于 CSV 格式文件存储数据(应用于跨平台的数据
交换)
查看存储引擎: show engines;

2)、InnoDBMyISAM存储引擎区别:

 
Innodb
MyISAM
存储文件
.frm 表定义文件
.ibd 数据文件和索引文件
.frm 表定义文件
.myd 数据文件
.myi 索引文件
表锁、行锁
表锁
事务
支持
不支持
CRDU
读、写
读多
count
扫表
专门存储的地方
索引结构
B+ Tree
B+ Tree

3)、存储引擎的选择:

大部分情况下,InnoDB都是正确的选择,除非我们要用到InnoDB不具备的特性,并且没有其他办法替代它,否则都应该选择InnoDB引擎。

常见的其他引擎使用场景:要是表只存在查询操作,并且表的行数较少时,为了提供效率,可使用MyISAM作为存储引擎;如果需要做缓存时,可使用Memory作为存储引擎。

 

 

 

本文地址:https://blog.csdn.net/qq_37145915/article/details/107168811