1.InnoDB 引擎(MySQL5.5之后默认使用)数据库
MySQL 5.5 及之后版本中的默认存储引擎,他的优势以下:缓存
灾难恢复性好安全
支持事务架构
使用行级锁并发
支持外键关联性能
支持热备份spa
对于InnoDB引擎中的表,其数据的物理组织形式是簇表(Cluster Table),主键索引和数据是在一块儿的,数据按主键的顺序物理分布操作系统
实现了缓冲管理,不只能缓冲索引也能缓冲数据,而且会自动建立散列索引以加快数据的获取索引
支持热备份事务
2.MyISAM引擎
特性以下:
不支持事务
使用表级锁,并发性差
主机宕机后,MyISAM表易损坏,灾难恢复性不佳
能够配合锁,实现操做系统下的复制备份、迁移
只缓存索引,数据的缓存是利用操做系统缓冲区来实现的。可能引起过多的系统调用且效率不佳
数据紧凑存储,所以可得到更小的索引和更快的全表扫描性能
两种存储引擎的大体区别表如今:
1)InnoDB支持事务,MyISAM不支持,这一点是很是之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪一个出错还能够回滚还原,而MyISAM就不能够了。
2)MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用
3)InnoDB支持外键,MyISAM不支持
4)从MySQL5.5.5之后,InnoDB是默认引擎
5)InnoDB不支持FULLTEXT类型的索引
6)InnoDB中不保存表的行数,如select count(*) from table时,InnoDB须要扫描一遍整个表来计算有多少行,可是MyISAM只要简单的读出保存好的行数便可。注意的是,当count(*)语句包含where条件时MyISAM也须要扫描整个表。
7)对于自增加的字段,InnoDB中必须包含只有该字段的索引,可是在MyISAM表中能够和其余字段一块儿创建联合索引。
8)清空整个表时,InnoDB是一行一行的删除,效率很是慢。MyISAM则会重建表。
9)InnoDB支持行锁(某些状况下仍是锁整表,如 update table set a=1 where user like '%lee%'
有人说MYISAM只能用于小型应用,其实这只是一种偏见。
若是数据量比较大,这是须要经过升级架构来解决,好比分表分库,读写分离,而不是单纯地依赖存储引擎。
如今通常都是选用InnoDB了,主要是MyISAM的全表锁,读写串行问题,并发效率锁表,效率低,MyISAM对于读写密集型应用通常是不会去选用的。
总之:
1.MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
2.MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,可是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。