存储结构:数据和索引是否在统一文件
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 命令清空表