简介:myisam存储引擎介绍,innodb存储引擎介绍,MySQL存储引擎对比
什么是存储引擎?
所谓存储引擎就是一种存储数据的方式,就好比磁盘里的文件系统。不同的存储引擎,存储数据的方式不同,实现的功能点也不同。
查看当前数据库所支持的所有存储引擎
show engines;
结果如下所示:
查看某个表的存储引擎信息
show table status from 数据库名 where name='表名' \G;
最后面的 \G 不写也可以,它的作用是格式化,方便大家查看。结果如下所示
MyISAM存储引擎
在MySQL5.5之前的版本默认使用MyISAM引擎。使用该存储引擎的表会在磁盘上存储三个文件:
MyISAM支持的数据类型也有三种:
存储速度非常快,容易发生缓存,而且表损坏后容易修复。缺点是占空间。这也是默认的存储格式。
优点是节省空间,但是一旦出错恢复起来比较麻烦。
在实际工作中如果数据文件发生错误时候,可以使用 check table 工具来检查,还可以使用 repair table 工具来恢复
MyISAM存储引擎最大的特点就是不支持事务,也因为不支持事务它的存储速度更快。利用这一点,我们在做MySQL主从分布式数据库时,在从库上选择使用MyISAM引擎来存储数据,以达到更好的效果。
InnoDB存储引擎
使用InnoDB存储引擎的表会在磁盘上存储两个文件
对于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条件没有走索引的都会锁全表。
有遗漏或者不对的可以在我的公众号留言哦