Mysql引擎类型刨析

一、InnoDB 引擎sql

  MySQL 5.5 及之后版本中的默认存储引擎,它的优势以下:灾难恢复性好,支持事务,使用行级锁,支持外键关联,支持热备份。缓存

  InnoDB引擎中的表,其数据的物理组织形式是簇表(Cluster Table),主键索引和数据是在一块儿的,数据按主键的顺序物理分布。实现了缓冲管理,不只能缓冲索引也能缓冲数据,而且会自动建立散列索安全

引以加快数据的获取。并发

二、MyISAM引擎性能

  它的特性以下:不支持事务;使用表级锁,并发性差;主机宕机后,MyISAM表易损坏,灾难恢复性不佳;能够配合锁,实现操做系统下的复制备份、迁移;只缓存索引,数据的缓存是利用操做系统缓spa

冲区来实现的。可能引起过多的系统调用且效率不佳;数据紧凑存储,所以可得到更小的索引和更快的全表扫描性能。操作系统

上面这两个是最经常使用的Mysql引擎。它们二者的主要区别:InnoDB支持事务,MyISAM不支持;MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用;InnoDB支持外键,索引

MyISAM不支持;清空整个表时,InnoDB是一行一行的删除,效率很是慢。MyISAM则会重建表;InnoDB支持行锁,MyISAM的全表锁;InnoDB中不保存表的行数,如select count(*) from table时,InnoDB需事务

要扫描一遍整个表来计算有多少行,可是MyISAM只要简单的读出保存好的行数便可。注意的是,当count(*)语句包含where条件时MyISAM也须要扫描整个表。内存

总之:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持;MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,可是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据

库功能。

三、MEMORY 存储引擎

  提供内存表,也不支持事务和外键。显著提升访问数据的速度,可用于缓存会频繁访问的、能够重构的数据、计算结果、统计值、中间结果。可是它使用表级锁,虽然内存访问快,但若是频繁的读写,表

级锁会成为瓶颈;只支持固定大小的行;不支持TEXT、BLOB字段。当有些查询须要使用到临时表(使用的也是MEMORY存储引擎)时,若是表中有TEXT、BLOB字段,那么会转换为基于磁盘的MyISAM

表,严重下降性能。

相关文章
相关标签/搜索