最近刚换了工作,数据库的使用也从postgresql转为了mysql。这里就不具体说这两个数据库的区别了,以后有机会好好介绍下。
其实最开始了解的数据库就是mysql,但是并没有去深入研究,由于过年那段时间找工作的时候被问到很多,所以也看了很多。
mysql的存储引擎也有很多种,这里只简单介绍下最常用的两个引擎——MyISAM和InnoDB。
主要区别:
MyISAM |
InnoDB |
不支持事务(读性能好) | 支持事务(写性能好,安全) |
不支持外键 | 支持外键 |
支持全文索引 | 不支持全文索引 |
表级粒度锁 | 行级粒度锁(不是绝对的,需要确定指定行) |
Count(*)直接读取保存行数(有条件是一样) | Count(*)需要扫描全表 |
AUTO_INCREMENT可以和其他字段做联合索引 | AUTO_INCREMENT的字段必须是单独的索引 |
DELETE FROM table时会重建表 | DELETE FROM table一行一行删除 |
每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。
.frm文件存储表定义。 数据文件的扩展名为.MYD (MYData)。 索引文件的扩展名是.MYI (MYIndex)。 |
基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB |
基本上我们都会用InnoDb存储引擎,如果有大量读操作的话MyISAM非常适用,但是我们多数互联网项目还是有大量的并发写。
后续会详细介绍InnoDB存储引擎的相关优化,希望大家可以多多关注。
本文原创与赵伊凡BLOG
©原创文章,转载请注明来源: 赵伊凡's Blog
©本文链接地址: MySQL数据库存储引擎MyISAM和InnoDB区别及适用场景
“MySQL数据库存储引擎MyISAM和InnoDB区别及适用场景”的30个回复