【MySQL】MyISAM与InnoDB的区别



    MyISAM与InnoDB主要区别如下:

    1. MySQL默认采用的是MyISAM。MyISAM不支持事务,而InnoDB支持。
    2. InnoDB不支持FULLTEXT类型的索引。
    3. InnoDB支持外键,MyISAM不支持。
    4. InnoDB的主键范围更大,最大是MyISAM的2倍。
    5. MyISAM支持GIS数据,InnoDB不支持.即MyISAM支持以下空间数据对象:Point,Line,Polygon,Surface等。
    6. InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
    7. 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
    8. DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
    9. LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。
    10. InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”


    参考文章:

    1. MySQL: InnoDB 还是 MyISAM?
    2. MyISAM和InnoDB的区别
    3. InnoDB与Myisam的六大区别


    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自枫芸志,原文地址《【MySQL】MyISAM与InnoDB的区别
    标签:
    分享:

还没有人抢沙发呢~

无觅相关文章插件,快速提升流量