MySQL表类型分析(myisam和innodb)

1.存储结构

MyISAM:每个MyISAM在磁盘上存储成三个文件,每一个文件的名字均以表名开始。扩展名支出文件类型。.frm文件存储表定义,.MYDmydata)文件存储表的数据,.MYImyindex)文件存储表的索引

InnoDB:所有的表都存储在一个数据文件中(也有可能是多个文件,或者是独立的表文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2G

2.存储空间

MyISAM:可以被压缩,存储空间较小。支持三种不同的存储格式:静态表、动态表、压缩表

InnoDB:需要更多的内存和存储,会在主内存中建立其专用的缓冲池用来高速缓冲数据和索引,但是不支持全文索引

3.事务支持(事务的四大特性:原子性,一致性,隔离性,持久性)

MyISAM:强调的是性能,每次查询均具有原子性,其执行速度比InnoDB类型更快,但是不提供事务支持

InnoDB:提供事务支持,外部键等高级数据库功能,是具有事务(commit)、回滚(rollback)和崩溃修复功能(crash recovery capabilities)的事务安全(transcation-safe)型表

4.CURD增删改查操作(createupdatereaddelete

MyISAM:如果执行大量的select操作,MyISAM是更好的选择,因为不支持行级锁,但是在增删的时候效率就会差好多,因为MyISAM支持表级锁。相反的是InnoDB支持行级锁但是不支持表级锁,所以删除插入的时候只需要锁定行就行,效率比较MyISAM高。

InnoDB:如果执行大量的insertupdate,处于对于性能的考虑,应该使用InnoDB

Delete从性能上来看InnoDB更优秀,但是delete from table的时候,InnoDB不会重新建立表,而是一行一行的删除,所以在InnoDB表上如果要清空保存有大量数据的表,最好使用truncate table命令

5.外键

MyISAM:不支持

InnoDB:支持

原文地址:https://www.cnblogs.com/zhangweijie01/p/10143842.html