MyISAM


InnoDB



作文的差异:





每个MyISAM存储在磁盘分为三档,第一个文件名开头的表的名称,以及扩展名表示文件的类型。



FRM文件存储表的定义。

数据文件的扩展is.myd(MYDATA)。

索引文件的扩展is.myi(myindex)。



基于磁盘的资源是InnoDB表空间的数据文件和日志文件,和InnoDB表的大小是有限的操作系统文件的大小,通常2gb




关于事务处理的几个方面:





MyISAM类型表强调性能,其执行比InnoDB类型更快,但是不提供事务支持





InnoDB提供高级的数据库功能,如交易支持交易,外部键,等等







选择更新、插入、删除操作


如果大量的选择时,MyISAM是更好的选择





1。如果你的数据执行大量的插入或更新,对性能的考虑,你应该使用InnoDB表



当2.delete从表,InnoDB不重建一个表,但一行行。

3.load表从主操作不适合InnoDB。解决的办法是改变InnoDB表MyISAM表首先,导入数据,然后转换为InnoDB表,但它并不适用于额外的InnoDB特征(如表的外键)。





对auto_increment操作







每桌一auto_incremen柱内部处理。



MyISAM自动更新这个栏目的插入和更新操作。这使得auto_increment柱更快(至少10%)。当顶部的序列的值被删除,它不能再被使用。(当auto_increment列定义为一个多最后一列列的索引,可以有利用价值从顶部的序列删除的情况下)。

的auto_increment值可以通过修改表或myisamch复位

对于auto_increment类型字段,InnoDB必须包含这个领域的唯一指标,但在MyISAM,它可以建立与其他领域的联合指数。

Better and faster auto_increment processing



如果你指定一个表的auto_increment列在数据字典中的InnoDB表处理包含一个计数器称为自动增长计数器,用于分配新值的列。



自动增长计数器只存储在主存中,而不存储在磁盘上。

对于这个计算器的算法实现,请参考

auto_increment列如何在InnoDB的工作





表的特定行数


select count(*)从表,MyISAM只读出保存的行数。注意,当计数(*)语句包含在条件下,两个表的操作是相同的。





InnoDB不保存在表中,这是行数,当select count(*)从表时,InnoDB必须扫描整个表来计算有多少行







锁


表锁





锁定行级提供与Oracle类型一致的无锁读(非锁定读入)。

选择),此外,InnoDB表的行锁也不是绝对的。如果MySQL不能确定扫描范围时执行的SQL语句,InnoDB表也将锁定整个表,如更新表设置Num = 1名。