mysql 体系结构和存储引擎介绍


Posted in MySQL onMay 06, 2022

1 前言

mysql 是一个单进程多线程架构的可移植的数据库,mysql 数据库实例在系统上的表现就是一个进程,可以在所有的平台上运行。

mysql 的整体架构图如下图所示: 

mysql 体系结构和存储引擎介绍

2 mysql 配置文件加载顺序

mysql 启动会读取配置文件,根据配置文件的参数启动数据库实例,数据库的配置文件为my.cnf,按照/etc/my.cnf -> /etc/mysql/my.cnf -> /usr/local/mysql/etc/my.cnf -> ~/my.cnf配置文件进行顺序加载,如果有相同的配置,则以最后一个加载的为准,这个和 springboot 的配置文件加载启动顺序是类似的。

3 mysql 引擎介绍

存储引擎是基于表的,而不是数据库。关于数据库引擎的语句为:

# 修改数据库引擎的语句
alter table table_name engine=MyISAM;
# 查询数据库可以支持的数据库引擎
show engines

查看数据库支持的引擎结果如下图所示: 

mysql 体系结构和存储引擎介绍

 mysql 存储引擎有 InnoDB,MyISAM,NDB 引擎,Memory 引擎, Archive 引擎,Federated 引擎,Maria 引擎。

3.1 InnoDB 引擎

InnoDB 存储引擎支持事务,其涉及目标主要是面向在线事务处理(OTLP),其特点是支持行锁和外键,并支持非锁定读(即读取数据默认不会加锁),从 mysql 5.5.8 版本开始,InnoDB 存储引擎就是mysql 的默认存储引擎。

InnoDB 存储引擎将数据存放在一个逻辑表空间中。InnoDB 通过使用多版本并发控制(MVCC)来获得高并发性的性能,并实现了SQL标准的4中隔离级别,默认使用 repeatable 级别。同时 innodb 引擎使用 next-locking 的测了来避免幻读现象的产生。除此之外,Innodb 引擎还提供了插入缓存,二次写,自适应哈希索引,预读等高性能和高可用的功能。

Innodb 存储引擎采用了聚集的方式,因此每张表都是按照主键的顺序进行存放的。如果没有显示的指定表的主键,那么存储引擎会为每行生成一个6字节的 rowid ,并以此作为主键使用。

3.2 MyISAM 引擎

MyISAM 存储引擎不支持事务、支持表锁不支持行锁,支持全文索引,主要面向一些 OLAP 数据库应用。数据库系统和文件系统很大的一个不同点在于对事务的支持,然而MyISAM存储引擎不支持事务,InnoDB 引擎支持,其引擎的缓冲池之缓存索引文件,而不缓存数据文件,这个和大多数的数据库不同。

MyISAM 存储引擎表是由 MYD 和 MYI 组成的一个系统,前者用于存放数据文件,后者是存放索引文件。

3.3 NDB 引擎

NDB 引擎是一个集群存储引擎,其结构是 share nothing 的集群架构,因此能够提供高可用性。NDB 的特点是数据全部存放在内存中,因此根据主键查询的效率速度极快,并且通过添加存储节点来提高数据库的性能。该存储引擎的连接操作是在数据库底层完成的,而不是在存储引擎层完成的,如果是复杂的数据库连接需要巨大的网络开销,查询速度比较慢。

3.4 Archive 引擎

Archive 引擎只支持 insert 和 select 操作,从 mysql5.1 之后开始支持索引,可以使用 zlib 算法进行数据行的压缩,压缩比可以达到 1:10,改引擎特别适合做数据的归档操作,比如说日志信息。该引擎使用行锁来实现高并发的插入操作,但是其本身不是事务安全的,其设计目的主要是提供高速插入和压缩功能。

3.5 Federated 引擎

Federated 存储引擎并不存放数据,它只是指向远程 mysql 数据库服务器上的表,改引擎只支持mysql 数据库表,不支持异构数据表。

3.6 Maria 引擎

Maria 引擎是新开发的数据库引擎,其设计目的是用来取代 MyISAM 引擎,从而成为 MySQL 的默认存储引擎。该引擎的特点是:支持缓存数据和索引文件,应用了行锁设计,提供了 MVCC 功能,支持事务和非事务安全的选项,以及更好的 BLOB 字符类型的处理性能。

3.7 其它引擎

除了以上提到的数据库引擎外,还有CSVMerge等数据库引擎, 感兴趣的可以继续关注学习。

4 总结

到此这篇关于mysql 体系结构和存储引擎介绍的文章就介绍到这了,更多相关mysql 存储引擎内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL 使用自定义变量进行查询优化
May 14 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
Jul 26 MySQL
SQL实现LeetCode(196.删除重复邮箱)
Aug 07 MySQL
MySQL中连接查询和子查询的问题
Sep 04 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
Mysql分析设计表主键为何不用uuid
Mar 31 MySQL
MySQL去除密码登录告警的方法
Apr 20 MySQL
mysql 8.0.27 绿色解压版安装教程及配置方法
Apr 20 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
Apr 26 MySQL
mysql拆分字符串作为查询条件的示例代码
Jul 07 MySQL
delete in子查询不走索引问题分析
Jul 07 MySQL
MySQL数据库 安全管理
May 06 #MySQL
Mysql 文件配置解析介绍
May 06 #MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 #MySQL
mysql性能优化以及配置连接参数设置
May 06 #MySQL
Mysql InnoDB 的内存逻辑架构
详细介绍MySQL中limit和offset的用法
May 06 #MySQL
MySQL数据库Innodb 引擎实现mvcc锁
May 06 #MySQL
You might like
给海燕B411配件机起死回生配上件
2021/03/02 无线电
php自定义hash函数实例
2015/05/05 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
Js 中debug方式
2010/02/07 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
jquery操作 iframe的方法
2014/12/03 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
vue router-link传参以及参数的使用实例
2017/11/10 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
python SVM 线性分类模型的实现
2019/07/19 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
python中操作文件的模块的方法总结
2021/02/04 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
写给妈妈的道歉信
2014/01/11 职场文书
高三家长寄语
2014/04/03 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
干部考核工作总结2015
2015/07/24 职场文书
python爬虫selenium模块详解
2021/03/30 Python
Docker下安装Oracle19c
2022/04/13 Servers