什么是存储引擎?
所谓存储引擎就是一种存储数据的方式,就好比磁盘里的文件系统。不同的存储引擎,存储数据的方式不同,实现的功能点也不同。
查看当前数据库所支持的所有存储引擎
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




