Mysql Engine【innodb,myisam】

Innodb,Myisam都是Mysql数据库存储的引擎,Innodb支持事务等数据库高级特性,Myisam不支持,但比较快速。
linux

  1. ISAM 是一个定义明确且历经时间考验的数据表格管理方法,它在设计时就考虑到数据库被查询的次数要远远高于更新的次数。所以,ISAM执行读取操做的速度很快,并且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不支持事务处理,也不可以容错;若是你的硬盘崩溃了,那么数据文件就没法恢复了。若是你正在把ISAM用在关键任务应用程序里,那就必须常常备份你全部的实时数据,经过其复制特性,MySQL可以支持这样的复制备份应用程序sql

  2. InnoDB 它提供了事务控制能力功能,它确保一组命令所有执行成功。或者当任何一条命令出现错误时全部命令的结果都被回退,能够想象在电子银行中事务控制能力是很是重要的。支持COMMIT,ROLLBACK和其余事务特性。最新版本的MySQL已经计划移除对DBD的支持,权利发展InnoDB数据库

  3. MyISAM是ISAM表的新版本,进行了以下扩展:windows

    二进制层次的可移植性,NULL列索引,对变长行比ISAM表有更少的碎片。支持大文件,更好的索引压缩,更好的键吗统计分布,更好和更快的Auto_increment处理性能

  4. 区别以下:操作系统

    1. InnoDB不支持FULLTEXT类型的索引。设计

    2. InnoDB不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,可是Myisam只要简单的读出保存好的行数便可。须要注意的是,若是select语句后面包含了where条件,则两种表的操做是同样的。索引

    3. 对于auto_increment类型的字段,InnoDB中必须包含只有该字段的索引,可是在Myisam中,能够和其余字段一块儿创建联合索引。事务

    4. DELETE from table时,InnoDB不会从新创建表。内存

    5. LOAD TABLE FROM MASTER 操做对InnoDB是不起做用的,解决方法是首先把InnoDB表改为Myisam表,到入数据后再改为InnoDB表,可是对于使用的额外的InnoDB特性的表来讲不适用,另外InnoDB的行锁也不是绝对的,若是在执行了一个SQL语句时MySQL不能肯定要扫描的范围,InnoDB一样会锁全表

    6. MySQL aminstractor建数据库的时候,表缺省是InnoDB类型

    7. InnoDB,Myisam两种类型:Myisam不支持事务处理高级特性,而InnoDB支持;Myisam类型的表强调的是性能,其执行速度比InnoDB类型的更快

    8. Myisam类型的二进制数据文件能够在不一样的操做系统中迁移,也就是能够直接从windows系统拷贝到linux系统中使用

    9. 修改表的引擎类型:ALTER TABLE tablename ENGINE = MYISAM;

相关文章
相关标签/搜索