MySQL存储引擎

 目录

1、存储引擎总结对比

2、存储引擎明细对比

2.1、MyISAM

2.2、MEMORY

2.3、InnoDB(默认)

3、存储引擎选择


问题:MySQL有哪些存储引擎?默认是哪个?有什么区别?如何选择存引擎?

1、存储引擎总结对比

在mysql5之后,支持的存储引擎有9种,但是常用的就那么几种,而且默认支持的是InnoDB

我们可以使用命令来看看当前数据库可以支持的存储引擎有哪些。

show engines;

微信截图_20210517005520.png

也可以查询当前表使用什么存储引擎: SHOW TABLE STATUS from 数据库库名 where Name=’表名’

SHOW TABLE STATUS from user_db where Name='t_user';

微信截图_20210517010047.png

不同的存储引擎都有各自的特点,以适应不同的需求,如表所示,下面我们来对常用的3种存储引擎进行一个对比。为了做出选择,首先要考虑每一个存储引擎提供了哪些不同的功能。

功能MyISAMMEMORYInnoDB
存储限制256TBRAM64TB
支持事务NONOYES
支持全文索引YESNONO
支持B树索引YESYESYES
支持HASH索引NOYESNO
支持数据缓存NONOYES
支持数据压缩YESNONO
空间使用率N/A
支持外键NONOYES

2、存储引擎明细对比

2.1、MyISAM

  1. 主要特点:不支持事务,也不支持外键,存储速度、访问速度快,表级锁定,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表;

  2. 磁盘存储文件:每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:

    • frm--存储表结构
    • MYD--MYData,存储数据
    • MYI--MYIndex,存储索引
  3. 支持3种不同的存储格式:

    • 静态(固定长度)表--默认的存储格式,优点在于存储速度非常快,容易发生缓存,而且表发生损坏后也容易修复,缺点是占空间;
    • 动态(可变长)表--优点是节省空间,但更新频繁容易产生碎片,故障恢复较难;
    • 压缩表--支持数据压缩,占用空间非常小

2.2、MEMORY

  1. 主要特点:数据存储在内存,宕机数据会丢失,不支持TEXT和BLOB类型,因VARCHAR在MySQL内部当做长度固定不变的CHAR类型,所以支持;
  2. 磁盘存储文件:frm--存储表结构;
  3. 索引:支持hash索引(默认)、B树索引;

2.3、InnoDB(默认)

  1. 主要特点:支持事务,默认的事务隔离级别为Repeatable read(可重复读),通过MVCC(并发版本控制)来实现的,支持外键约束,支持自动增加列AUTO_INCREMENT属性,支持自动灾难恢复,热备,支持数据缓存,行级锁定,比较适合处理多重并发更新请求:
  2. 磁盘存储文件:
    • frm--存储表结构
    • ibd--存储数据和索引,位于B+数的叶子节点上,分区表有独立的ibd文件;
  3. 索引:B树索引

3、存储引擎选择

使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能。 选择合适的存储引擎的标准可以分为:

  • 是否支持事务?--InnoDB
  • 是否需要使用热备?--InnoDB
  • 是否需要外键支持?--InnoDB
  • 是否支持崩溃恢复?--InnoDB、MyISAM
  • 是否以读为主的业务?--MyISAM
  • 是否数据较小,且被频繁使用,允许丢失?--MEMORY

然后按照标准,选择对应的存储引擎即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值