快速了解MySQL存储引擎

本文详细介绍了MySQL的存储引擎,包括InnoDB、MyISAM和Memory的特点。InnoDB作为默认引擎,支持事务和行级锁,适合高并发场景;MyISAM强调读取速度,不支持事务;Memory引擎数据存储在内存中,访问快速但数据不持久。选择存储引擎应根据业务需求,如对事务完整性和并发性的要求来决定。
摘要由CSDN通过智能技术生成

mysql存储引擎

mysql体系结构

  • 连接层:
    • 客户端连接器(JDBC、ODBC、…)
    • 主要是接收客户端的连接,完成一些连接的处理,以及认证授权的相关操作(比如说验证用户名和密码,以及校验每一个客户端所具有的权限。),以及一些相关的安全方案,检查是否超过最大连接数等等。
  • 服务层:
    • 绝大部分的核心功能都是在服务层完成的,像SQL接口,查询解析器,查询优化器,查询缓存等等。所有跨存储引擎的实现也都是在服务层实现的。比如DML语句,DDL语句的封装、存储过程、视图触发器都是在服务层。
  • 引擎层:
    • 存储引擎(InnoDB、MyISAM、NDB、…)
    • 如果现有的存储引擎不能满足我们的需求,我们还可以在其基础上扩展,所以称之为“可插拔式存储引擎”,就是说要用就加入进来,如果不用就可以把它拔掉,这个存储引擎控制的就是mysql当中数据的存储和提取的方式。
    • 重点:索引是在存储引擎当中是实现的,也就意味着不同的存储引擎,索引结构是不一样的。InnoDB引擎是Mysql5.5版本以后的默认存储引擎。
  • 存储层:
    • 主要是讲数据存储在文件系统上,并完成与存储引擎的交互。

存储引擎简介

存储引擎就是mysql数据库当中存储数据,建立索引、更新/查询等技术的实现方式。 存储引擎是基于数据库表的,不是基于数据库的,也就是说在一个数据库的多张表是可以选择不同的存储引擎的,所以这个存储引擎也被称为表类型。
 使用show engines;可以查看当前数据库支持的存储引擎,以及各个存储引擎的特点。
在这里插入图片描述

  • Engine:有哪些存储引擎
  • Support:是否支持
  • Comment:注释
  • Transactions:是否支持事物
  • XA:是否支持XA协议
  • Savepoints:是否支持保存点

eg1:创建表 my_myisam,并指定MyISAM存储引擎。

create table  my_myisam(
	id int,
	name varchar(40)
)engine = MyISAM;

eg2:创建表 my_memory,并指定Memory存储引擎。

create table  my_memory(
	id int,
	name varchar(40)
)engine = MEMORY; 

可以使用如下语句查看表的引擎:

 show create table my_memory;
 show create table my_myisam;

存储引擎特点

InnoDB:

  • 介绍:
    • InnoDB是一种兼顾高可靠性和高性能的通用存储引擎。在MySql5.5之后,InnoDB是默认的MySQL存储引擎。
  • 特点:
    • DML(增删改)操作遵循ACID模型(事务的四大特性),支持事务
      • 行级锁,提高并发访问性能(和表锁相比)。
      • 支持外键FOREIGN KEY约束,保证数据的完整性和正确性。
  • 文件:
    • 在InnoDB的存储引擎当中,每一个InnoDB引擎的表都会对应一个xxx.ibd(xxx是表名)的表空间文件,存放表结构的数据和索引。
    • 参数:innoDB_file_per_table,mysql8.0当中这个开关是打开的,就代表每一张表都对应一个表空间文件。
  1. 可以使用命令 show variables like 'innodb_file_per_table';查看参数。
    在这里插入图片描述
  2. 可以在mysql安装目录下的data里面找到表对应的表空间文件,然后使用命令ibd2sdi xxx.ibd;命令查看ibd文件。
  3. 逻辑存储结构:一个表空间包含若干个,一个中包含若干个,一个包含若干个(索引页,数据页),一个包含若干个(指的是在表结构中存储的一行一行的数据)。
  4. 在InnoDB的逻辑结构中page(页)是磁盘操作的最小单元。一个区大小固定1M,一个页大小固定16K。

MyISAM:

  • 介绍:
    • MySQL早期默认的存储引擎。
  • 特点:
    • 不支持事务,不支持外键。
    • 支持表锁,不支持行锁。
    • 访问速度快。
  • 文件:
    • .sdi文件存放表结构信息。.MYD文件存放表中的数据。.MYI文件存放索引。
  • Memory
    • 介绍;
      • Memory引擎的表数据是存储在内存中的,由于受到硬件问题、或断电的影响,只能将这些表作为临时表或缓存使用。
    • 特点:
      • 内存存放,访问速度快。
      • 支持Hash索引(默认)
    • 文件:
      • .sdi文件存储表结构信息。

存储引擎选择

 存储引擎是没有好坏之分的,要在合适的业务场景当中选择合适的存储引擎。

  • InnoDB:支持事务,外键,行级锁。如果在某一块业务场景当中,对事务的完整性,还有在并发条件下对事务的一致性要求比较高,那InnoDB是我们唯一的选择。
  • MyISAM:如果业务数据是以读取和插入为主,很少进行更新和删除操作,而且对事务的完整性和并发性要求不是很高。那么选择这个存储引擎是比较合适的。
  • MEIMORY:将数据保存在内存中,访问速度快,通常用于临时表及缓存。太大的表也无法缓存在内存中,而且无法保证数据的安全性。(不如使用Redis)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黑cc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值