当前位置: 移动技术网 > IT编程>网页制作>HTML > mysql学习(一):mysql基本架构及存储引擎

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

2020年07月09日  | 移动技术网IT编程  | 我要评论

一、简介:

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

二、安装

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

三、具体架构

1、逻辑结构

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

                                                                         

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

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

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

2、逻辑架构

如下图,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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网