mysql 两个引擎MyISAM和InnoDB简练对比

MyISAM采用非聚簇索引,查找慢,更新快;表级锁,粒度大,并发度低;
InnoDB采用聚簇索引,查找快,更新慢;行级锁,粒度小,并发度高。

人们一般把基于锁的并发控制机制称成为悲观机制,而把MVCC机制称为乐观机制。这是因为锁机制是一种预防性的,读会阻塞写,写也会阻塞读,当锁定粒度较大,时间较长时并发性能就不会太好;而MVCC是一种后验性的,读不阻塞写,写也不阻塞读,等到提交的时候才检验是否有冲突,由于没有锁,所以读写不会相互阻塞,从而大大提升了并发性能。——很赞!

聚簇索引:索引节点与数据节点一同存储;非聚簇索引:索引节点与数据节点分别存储。

MyISAM :

MyISAM属于堆表,myisam在磁盘存储上有三个文件,每个文件名以表名开头,扩展名指出文件类型。

1).frm 用于存储表的定义
2).MYD 用于存放数据
3).MYI 用于存放表索引

还支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。

InnoDB :
innodb属于索引组织表,innodb有两种存储方式,共享表空间存储和多表空间存储

两种存储方式的表结构和myisam一样,以表名开头,扩展名是.frm。

如果使用共享表空间,那么所有表的数据文件和索引文件都保存在一个表空间里,一个表空间可以有多个文件,通过innodb_data_file_path和innodb_data_home_dir参数设置共享表空间的位置和名字,一般共享表空间的名字叫ibdata1-n。

如果使用独立表空间(多表空间),那么每个表都有一个表空间文件用于存储每个表的数据和索引,文件名以表名开头,以.ibd为扩展名。

参考文章:MySQL数据库系列(三)- MySQL常用引擎MyISAM和InnoDB区别详解

原文地址:https://www.cnblogs.com/bridgestone29-08/p/13888745.html