Mysql存储引擎

Mysql存储引擎

Mysql当中常见的存储引擎

  • InnoDB:这是 MySQL 默认的存储引擎,支持事务和行级锁定,适用于需要高并发和高可靠性的应用程序。

  • MyISAM:这是 MySQL 最早的存储引擎之一,不支持事务和行级锁定,但速度较快,适用于读操作比写操作更频繁的应用程序。

  • Memory:这是 MySQL 中的内存存储引擎,适用于需要快速读写的数据存储,但是它不支持持久化存储,当 MySQL 服务重启时,内存中的数据将丢失。

  • Archive:这是 MySQL 中的归档存储引擎,适用于对大量历史数据进行归档存储和压缩的场景,但是不支持索引和事务。

  • CSV:这是 MySQL 中的 CSV 存储引擎,适用于需要将数据导出为 CSV 格式的场景,但是不支持索引和事务。

  • NDB:这是 MySQL 中的集群存储引擎,适用于分布式数据存储和高可用性要求较高的场景。

此外,MySQL 还支持其他一些存储引擎,如 Blackhole、Federated、Merge 等

查看数据库支持的存储引擎

show engines

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E4UhKtd0-1680486355335)(D:\笔记\mysql\image-20230330195342244-16801772243512.png)]
可以看到Mysql支持的存储引擎,其中InnoDB是默认的存储引擎(Mysql5.5之后),当建表时没指定存储引擎就会使用默认的存储引擎。

存储引擎特点

InnoDB
  • 介绍
    • InnoDB时一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB时默认的MySQL存储引擎。
  • 特点
    • DML操作遵循ACID模型,支持事务;
    • 行级锁,提高并发访问性能;
    • 支持外键FOREIGN KEY约束,保证数据的完整性和正确性;
  • 文件
    • xxx.ibd:xxx代表的是文件名,InnoDB引擎每张表都会对应这样一个表空间文件,存储该表的结构(frm、sdi)、数据和索引。
    • 参数:innodb_file_per_table
  • 逻辑存储结构:
    • 表空间(Tablespace):InnoDB将所有表数据存储在表空间中,每个表空间对应一个.ibd文件。表空间分为系统表空间和用户表空间,其中系统表空间包含一些元数据信息,如InnoDB的数据字典等;用户表空间存储用户创建的表和索引数据。
    • 页面(Page):InnoDB使用固定大小的页面来组织表数据,通常大小为16KB。每个页面都有一个唯一的页面编号,页面由数据页和索引页两种类型。
    • 行(Row):InnoDB以行为单位来存储表数据,每一行记录都包含一个主键和其他列数据。
    • 索引(Index):InnoDB使用B+树来实现索引,包括主键索引和辅助索引。每个索引都由多个页面组成,根据页面编号形成B+树结构。在查询数据时,InnoDB使用索引来定位数据页和行记录,以提高查询效率。
    • 总体而言,InnoDB的逻辑存储结构是基于页的存储引擎,以行为单位存储数据,使用B+树实现索引来提高查询效率。
MyISAM
  • 介绍
    • MyISAM是MySQL早期的默认存储引擎。
  • 特点
    • 不支持事务,不支持外键
    • 支持表锁,不支持行锁
    • 访问速度快
  • 文件
    • xxx.sdi:存储表结构信息
    • xxx.MYD:存储数据
    • xxx.MYI:存储索引
Memory
  • 介绍
    • Memory存储引擎的表数据是存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。
  • 特点
    • 内存存放
    • hash索引(默认)
  • 文件
    • xxx.sdi:存储表结构信息。

存储引擎选择

在选择存储引擎时,应该根据系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。

  • InnoDB:时Mysql的默认存储引擎,支持事务、外键。。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎时比较合适的。
  • MyISAM:如果应用是以读操作和插入操作为主,只有少量的更新和删除操作,并且对事务的完整性、并发性要求并不是很高,那么选择这个存储引擎是非常合适的。
  • MEMORY:将所有数据保存在内存中,访问速度块,通常用于临时表及缓存。MEMORY的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值