暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的常用存储引擎详解

编程经验共享 2023-03-06
136

什么是存储引擎?

所谓存储引擎就是一种存储数据的方式,就好比磁盘里的文件系统。不同的存储引擎,存储数据的方式不同,实现的功能点也不同。

查看当前数据库所支持的所有存储引擎

show engines;
复制

结果如下所示:

查看某个表的存储引擎信息

show table status from 数据库名 where name='表名' \G;
复制
最后面的 \G 不写也可以,它的作用是格式化,方便大家查看。结果如下所示

MyISAM存储引擎

在MySQL5.5之前的版本默认使用MyISAM引擎。使用该存储引擎的表会在磁盘上存储三个文件:

  1. frm文件:存储表的定义数据

  2. MYD文件:存放表具体记录的数据

  3. MYI文件:存储索引但仅保存记录所在页的指针,索引的结构是B+树结构

MyISAM支持的数据类型也有三种:
  • 静态固定长度表

存储速度非常快,容易发生缓存,而且表损坏后容易修复。缺点是占空间。这也是默认的存储格式。

  • 动态可变长表

优点是节省空间,但是一旦出错恢复起来比较麻烦。

  • 压缩表

在实际工作中如果数据文件发生错误时候,可以使用 check table 工具来检查,还可以使用 repair table 工具来恢复

MyISAM存储引擎最大的特点就是不支持事务,也因为不支持事务它的存储速度更快。利用这一点,我们在做MySQL主从分布式数据库时,在从库上选择使用MyISAM引擎来存储数据,以达到更好的效果。
InnoDB存储引擎

使用InnoDB存储引擎的表会在磁盘上存储两个文件

  1. frm文件:存储表的定义信息

  2. IBD文件:存储数据和索引。如果是分区表的话,每个分区对应单独的IBD文件。

对于InnoDB来说,最大的特点在于支持事务。但是这是以损耗效率换取来的。

存储引擎的特点对比

不同的存储引擎都有各自的特点,以适应不同的需求。接下来我们针对MyISAM和InnoDB两种种存储引擎做出对比

功能MyISAMInnoDB
存储限制256T64T
事务不支持支持
全文索引YesNo
B树索引YesYes
集群索引NoYes
数据索引NoYes
数据压缩YesNo
外键NoYes
我们再来看看这两个引擎的锁级别

MyISAM:只支持表级锁,用户在操作myisam表时,select、update、delete、insert语句都会给表自动加锁。如果加锁以后的表满足insert并发的情况,可以在表的尾部插入新的数据。

InnoDB:支持行级锁,是InnoDB的最大特点。行锁大幅度提高了多用户并发操作的性能。但是InnoDB的行锁,只是在WHERE的索引上有效,where条件没有走索引的都会锁全表。

PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。

你的每个点赞和在看,我们都感恩在心

文章转载自编程经验共享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论