MySQL的存储引擎有哪些,有什么优劣

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提供事务支持已经外部键等高级数据库功能。

相关文章
相关标签/搜索