2019独角兽企业重金招聘Python工程师标准>>>
Innodb,Myisam都是Mysql数据库存储的引擎,Innodb支持事务等数据库高级特性,Myisam不支持,但比较快速。
ISAM 是一个定义明确且历经时间考验的数据表格管理方法,它在设计时就考虑到数据库被查询的次数要远远高于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不支持事务处理,也不能够容错;如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实时数据,通过其复制特性,MySQL能够支持这样的复制备份应用程序
InnoDB 它提供了事务控制能力功能,它确保一组命令全部执行成功。或者当任何一条命令出现错误时所有命令的结果都被回退,可以想象在电子银行中事务控制能力是非常重要的。支持COMMIT,ROLLBACK和其他事务特性。最新版本的MySQL已经计划移除对DBD的支持,权利发展InnoDB
MyISAM是ISAM表的新版本,进行了如下扩展:
二进制层次的可移植性,NULL列索引,对变长行比ISAM表有更少的碎片。支持大文件,更好的索引压缩,更好的键吗统计分布,更好和更快的Auto_increment处理
区别如下:
InnoDB不支持FULLTEXT类型的索引。
InnoDB不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是Myisam只要简单的读出保存好的行数即可。需要注意的是,如果select语句后面包含了where条件,则两种表的操作是一样的。
对于auto_increment类型的字段,InnoDB中必须包含只有该字段的索引,但是在Myisam中,可以和其他字段一起建立联合索引。
DELETE from table时,InnoDB不会重新建立表。
LOAD TABLE FROM MASTER 操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成Myisam表,到入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性的表来说不适用,另外InnoDB的行锁也不是绝对的,如果在执行了一个SQL语句时MySQL不能确定要扫描的范围,InnoDB同样会锁全表
MySQL aminstractor建数据库的时候,表缺省是InnoDB类型
InnoDB,Myisam两种类型:Myisam不支持事务处理高级特性,而InnoDB支持;Myisam类型的表强调的是性能,其执行速度比InnoDB类型的更快
Myisam类型的二进制数据文件可以在不同的操作系统中迁移,也就是可以直接从windows系统拷贝到linux系统中使用
修改表的引擎类型:ALTER TABLE tablename ENGINE = MYISAM;