mysql学习(一):mysql基本架构及存储引擎
一、简介:
MySQL 是最流行的关系型数据库管理系统,但是日常只会运用简单的增删改查,目前想深究一下mysql具体的原理,让自己的知识不只是停留在表面层次。
二、安装
mysql在linux的安装比较简单,这里的话推荐https://jingyan.baidu.com/article/4d58d5417ca1fc9dd5e9c05f.html,可以根据这个网址进行安装。
三、具体架构
1、逻辑结构
如下图,mysql的逻辑结构分为下面三层:
第一层:最上层是大部分基于网络的C/S服务都有的部分,比如连接处理、授权认证、安全等;
第二层:mysql的核心业务层,,查询解析、分析、优化缓存以及所有的内置函数都在这一层完成,所有跨存储引擎的功能也都在这一层实现:存储过程、触发器、视图等等。
第三层:MySQL的最底层,包含了存储引擎(注:存储引擎负责MySQL中数据的存储和读取),服务器通过API和存储引擎进行通讯,而接口屏蔽了存储引擎之间的差异,对上层查询透明。
2、逻辑架构
如下图,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 格式文件存储数据(应用于跨平台的数据
交换)
|
2)、InnoDB和MyISAM存储引擎区别:
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
上一篇: Dubbo原理(5)--服务调用流程
推荐阅读
-
Mysql存储引擎介绍、查看及常用存储引擎讲解
-
MySQL学习【第十篇存储引擎实际应用】
-
荐 【MySQL系列7】InnoDB引擎存储结构及InnoDB特性Change Buffer和Double Writer分析
-
Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)
-
Linux下mysql数据库的创建导入导出 及一些基本指令
-
【mysql基本使用学习笔记day01】【数据库简介】数据存储+数据库+RDBMS+RDBMS和数据库的关系+SQL+MySQL
-
高性能mysql 之 选择存储引擎(一) mysqlMySQL引擎InnoDB存储引擎
-
MySQL技术内幕学习有感(三)——关于InnoDB存储引擎
-
MySQL 学习总结 之 初步了解 InnoDB 存储引擎的架构设计
-
MySQL数据库的事务及存储引擎