MyISAM vs InnoDB

Posted dddjp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyISAM vs InnoDB相关的知识,希望对你有一定的参考价值。

 
存储结构:数据和索引是否在统一文件
    myisam:.frm文件存储表定义。.MYD (MYData)。.MYI (MYIndex)
    InnoDB表的大小只受限于操作系统文件的大小,一般为2GB      
存储空间:myisam占用空间小,数据以文件的方式存储
    MyISAM:可被压缩,存储空间较小。支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。
    InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
事务:innodb支持
外键:innodb支持
全文索引fulltext:myisam支持
         innodb可以使用sphinx插件支持全文索引
auto_increament:innodb必须包含该列的单值索引,如果该列和其他列组成组合索引,该列必须是组合索引的第一列
           myisam不必包含该列的单值索引,如果和其他列组成组合索引,该列不必是组合索引的第一列
主键:myisam允许没有主键或者索引的表存在
   innodb如果表中没有主键或者唯一索引,则存储引擎自动生成一个6字节的主键
索引:myisam索引保存的是行的地址
   innodb主键索引保存的是数据,其他索引保存的是主键索引的值
锁:myisam表锁
  innodb行锁
count(*):不带where条件
  myisam保存表的总行数,直接返回
  innodb需要遍历表
缓存:myisam仅仅缓存索引,不缓存数据(myisam数据文件和索引文件分开)
   innodb缓存索引和真实数据,所以,对内存有更高的要求
 
show engines;
show variables like \'%storage_engine%\';
 
 
 
select:myisam性能高
insert、update:innodb性能高
delete * from table:innodb是一行一行地删,所以,在innodb存储引擎下,应使用truncate table 命令清空表
 
 
 
 
 
 
 

以上是关于MyISAM vs InnoDB的主要内容,如果未能解决你的问题,请参考以下文章

理解MySQL数据库不可缺少的知识(索引,事务存储引擎)!

Mysql存储引擎

MyISAM vs InnoDB

MySQL引擎:InnoDB VS MyISAM

MySQL引擎:InnoDB VS MyISAM

InnoDB VS Myisam 关于每分钟的日志数据和日志检索