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名。