什么是存储引擎?
所谓存储引擎就是一种存储数据的方式,就好比磁盘里的文件系统。不同的存储引擎,存储数据的方式不同,实现的功能点也不同。
查看当前数据库所支持的所有存储引擎
show engines;
复制
结果如下所示:
查看某个表的存储引擎信息
show table status from 数据库名 where name='表名' \G;
复制
最后面的 \G 不写也可以,它的作用是格式化,方便大家查看。结果如下所示
在MySQL5.5之前的版本默认使用MyISAM引擎。使用该存储引擎的表会在磁盘上存储三个文件:
frm文件:存储表的定义数据
MYD文件:存放表具体记录的数据
MYI文件:存储索引但仅保存记录所在页的指针,索引的结构是B+树结构
静态固定长度表
存储速度非常快,容易发生缓存,而且表损坏后容易修复。缺点是占空间。这也是默认的存储格式。
动态可变长表
优点是节省空间,但是一旦出错恢复起来比较麻烦。
压缩表
在实际工作中如果数据文件发生错误时候,可以使用 check table 工具来检查,还可以使用 repair table 工具来恢复
使用InnoDB存储引擎的表会在磁盘上存储两个文件
frm文件:存储表的定义信息
IBD文件:存储数据和索引。如果是分区表的话,每个分区对应单独的IBD文件。
对于InnoDB来说,最大的特点在于支持事务。但是这是以损耗效率换取来的。
不同的存储引擎都有各自的特点,以适应不同的需求。接下来我们针对MyISAM和InnoDB两种种存储引擎做出对比
功能 | MyISAM | InnoDB |
---|---|---|
存储限制 | 256T | 64T |
事务 | 不支持 | 支持 |
全文索引 | Yes | No |
B树索引 | Yes | Yes |
集群索引 | No | Yes |
数据索引 | No | Yes |
数据压缩 | Yes | No |
外键 | No | Yes |
MyISAM:只支持表级锁,用户在操作myisam表时,select、update、delete、insert语句都会给表自动加锁。如果加锁以后的表满足insert并发的情况,可以在表的尾部插入新的数据。
InnoDB:支持行级锁,是InnoDB的最大特点。行锁大幅度提高了多用户并发操作的性能。但是InnoDB的行锁,只是在WHERE的索引上有效,where条件没有走索引的都会锁全表。
PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。


文章转载自编程经验共享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
3388次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
912次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
542次阅读
2025-04-17 17:02:24
MySQL 8.0 OCP 1Z0-908 考试解析指南(二)
JiekeXu
364次阅读
2025-04-30 17:37:37
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
数据库运维之道
306次阅读
2025-04-28 11:01:25
SQL优化 - explain查看SQL执行计划(下)
金同学
302次阅读
2025-05-06 14:40:00
MySQL 8.0 OCP 1Z0-908 考试题解析指南
青年数据库学习互助会
294次阅读
2025-04-30 12:17:54
MySQL 官方准备了 3 个月的羊毛,万万没想到 8 天就被薅秃了,看看JieKeXu怎么说?
青年数据库学习互助会
283次阅读
2025-05-09 10:07:42
MySQL 8.4 新特性深度解析:功能增强、废弃项与移除项全指南
JiekeXu
252次阅读
2025-04-18 20:21:32
4月“墨力原创作者计划”获奖名单公布!
墨天轮编辑部
209次阅读
2025-05-13 16:21:59