MySQLInnoDB存储引擎和MyISAM之间的差异
下面是一些细节和具体的区别:
1.innodb不支持全文索引的类型。
2.innodb不保存表的具体行数,也就是说,当执行select count(*)从表,InnoDB会扫描整个表来计算行数,但MyISAM只是读取保存的行数。请注意,当计数(*)语句包含在的条件下,两个表的操作是一样的。
3、对auto_increment类型字段,InnoDB必须包含这个领域的唯一指标,但在MyISAM,它可以建立与其他领域的联合指数。
当4.delete从表,InnoDB不重建一个表,但一行行。
5.load表从主操作InnoDB不是有效的。解决的办法是改变InnoDB表MyISAM表首先,导入数据,然后转换为InnoDB表,但它不适用于额外的InnoDB功能列表(如外键)。
此外,在InnoDB表的行锁也不是绝对的。如果执行SQL语句,MySQL无法确定要扫描的范围。InnoDB表也将锁定整个表,如更新表设置Num = 1的名字一样的名字。
主要区别:两类之间最重要的区别是InnoDB支持事务处理和外键和行级锁。MyISAM不支持它。所以MyISAM往往是容易被认为只用于小型项目。
作为使用MySQL的用户角度,InnoDB和MyISAM都喜欢它。如果数据库平台需要达到以下要求:99.9%稳定性,方便的可扩展性和高可用性,MyISAM绝对是首选。
原因如下:
1,平台上的项目大多是读和写的少,和MyISAM的阅读成绩比InnoDB强多了。
2、对MyISAM的索引和数据是分开的,和索引压缩,和内存使用增加很多。更多的指标可以被加载,和InnoDB是紧密联系在一起的指标和数据,和无压缩,它可以导致InnoDB要大于MyISAM。
3,通常1,将2个月应用开发者不小心更新范围表哪里写错了,因为这表不能正常使用,这个时候MyISAM的优势表现,只是从压缩文件的复印件和相应的表,把它放在一个数据库目录,然后倾倒SQL然后回到主图书馆,和相应的binlog补丁。如果是InnoDB,恐怕没那么快。不要告诉我,InnoDB定期出口xxx.sql机制,因为一个数据库实例的最小数据量基本上是几个G的大小。
4、从应用逻辑联系,选择数量和顺序(*)是最常见的,大概占到总数的60%的SQL语句,这个操作实际上是InnoDB会锁定表,很多人认为我们是唯一的行级锁,它是有效的主键,将锁定非主键的表。
5、经常有许多应用部门需要我给他们一些常规表的数据,MyISAM是非常方便的,只要把相应的表frm.myd,MYI文件,让他们开始对线在对应的数据库版本,和InnoDB需要出口xxx.sql,因为别人文件的字典数据文件的影响,其他不可用。
6、如果插入和MyISAM比写操作,InnoDB还达不到写MyISAM的表现,如果它是基于InnoDB更新操作的指标,而MyISAM可能不会,但再高的并发写入,也从图书馆的问题可以理解,以及通过多实例库表结构来解决。
7、如果是使用MyISAM引擎,将可以大大加快应用部门的发展。只要在合并表上进行一些select(*)操作,它们就非常适合对数百万行项目的总数,如日志、调查和统计。
当然,我们不是绝对不使用事务的项目使用InnoDB。此外,可以说,你无法抗拒的MyISAM太多的文字,但它可以由建筑。