InnoDB引擎表和myisam引擎表的区别

1、表锁差异

myisam只支持表级锁,,innodb支持事务和行级锁,是innodb最大的特色,

 

2、数据文件差异

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

.frm 用于存储表的定义

.MYD 用于存放数据

.MYI 用于存放表索引

innodb有两种存储方式,共享表空间存储和独立表空间存储

 

 

3、索引差异

1、关于自动增长

myisam引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。

innodb引擎的自动增长咧必须是索引,如果是组合索引也必须是组合索引的第一列。

 

2、关于主键

myisam允许没有任何索引和主键的表存在,

myisam的索引都是保存行的地址。

innodb引擎如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见)

innodb的数据是主索引的一部分,附加索引保存的是主索引的值。

 

4、全文索引

myisam支持 FULLTEXT类型的全文索引

innodb不支持FULLTEXT类型的全文索引,

 

5、关于count()函数

myisam保存有表的总行数,如果select count(*) from table;会直接取出出该值

innodb没有保存表的总行数,如果使用select count(*) from table;就会遍历整个表,消耗相当大,但是在加了wehre       条件后,myisam和innodb处理的方式都一样。

 

6、是否支持外键

InnoDB支持外键,MyISAM不支持。

 

7、myisam支持gis类型数据

 

8、InnoDB支持外键,myisam不支持

你可能感兴趣的:(MYSQL常用知识分类)