zoukankan      html  css  js  c++  java
  • sql中InnoDB和MyISAM的区别

    InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型

     1,MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持等高级处理,往往被认为只适合小项目;而InnoDB类型支持事物,以及外部键和行级锁等高级数据库功能。
    
    2,MyISAM的索引和数据分开,每个MyISAM在磁盘上存储成三个文件。第一个文件的名字为表名,扩展名为文件类型:
        .frm文件存储表定义;
        .MYD (MYData)文件为数据文件;
        .MYI (MYIndex)为索引文件;
    而InnoDB表基于磁盘空间,大小只受限于操作系统文件的大小,一般为2GB。
    
    3.InnoDB不支持FULLTEXT类型的索引。
    
    4.InnoDB不保存表的具体行数,如执行select count(*) from table时要扫描一遍整个表来计算有多少行,而MyISAM直接读出已保存的行数,更快。但count(*)语句中包含 where条件时,那么两种表的操作是一样的。
    
    5.AUTO_INCREMENT类型的字段,在InnoDB中必须包含只有该字段的索引,而在MyISAM表中则可以喝其他字段一起组成联合索引。
    
    6.DELETE FROM table语句在InnoDB中不会重新建表,而是一行一行的删除。
    
    7.LOAD TABLE FROM MASTER操作对InnoDB表无效,解决方法是把InnoDB表先改成MyISAM表导入数据,然后再改成InnoDB表。
    但这种方法对包含特定功能的innoDB表无效,如使用外键的innoDB表(Myisam不支持外键)。
    
    8.Myisam是表锁;而InnoDB表提供行级锁(locking on row leve),提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs), 但行锁不是绝对的,只是where对它主键是有效,非主键的都会锁全表的。如执行SQL的语句不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”
    
    9.MyISAM读性能比Innodb强,所select功能多而表之间结构相对简单时用myISAM;大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。
    
    10.MyISAM的索引和数据分开,索引有压缩,内存使用率高,能加载更多索引;而Innodb中索引和数据是紧密捆绑,无压缩,造成Innodb比MyISAM体积庞大不小。
    
    11.MyISAM的insert写操作性能比Innodb好,但针对基于索引的update操作,MyISAM逊色Innodb很多,可那么高并发的写,从库能否追的上也是一个问题,还不如通过多实例分库分表架构来解决。
    
    12.对AUTO_INCREMENT的操作:
        每表一个AUTO_INCREMEN列的内部处理。 
        MyISAM为INSERT和UPDATE操作自动更新这一列。这使得AUTO_INCREMENT列更快(至少10%)。在序列顶的值被删除之后就不能再利用。(当AUTO_INCREMENT列被定义为多列索引的最后一列,可以出现重使用从序列顶部删除的值的情况)。
        AUTO_INCREMENT值可用ALTER TABLE或myisamch来重置  
        对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引  
        更好和更快的auto_increment处理
    
        而innoDB中为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值。自动增长计数器仅被存储在主内存中,而不是存在磁盘上。
    
  • 相关阅读:
    poj 3666 Making the Grade
    poj 3186 Treats for the Cows (区间dp)
    hdu 1074 Doing Homework(状压)
    CodeForces 489C Given Length and Sum of Digits...
    CodeForces 163A Substring and Subsequence
    CodeForces 366C Dima and Salad
    CodeForces 180C Letter
    CodeForces
    hdu 2859 Phalanx
    socket接收大数据流
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205356.html
Copyright © 2011-2022 走看看