首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

数据库发动机-MySQL的MyISAM和InnoDB

2012-07-03 
数据库引擎-MySQL的MyISAM和InnoDBMyISAM默认存储引擎,基于传统的ISAM类型。ISAM:Indexed Sequential Acces

数据库引擎-MySQL的MyISAM和InnoDB

MyISAM

默认存储引擎,基于传统的ISAM类型。

ISAM:Indexed Sequential Access Method (有索引的顺序访问方法),它是存储记录和文件的标准方法。

每张MyISAM表被存放在三个文件:

  • frm文件存放表格定义。
  • 数据文件是MYD(MYData)。
  • 索引文件是MYI(MYIndex)引伸。

    MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦。

    MyISAM特点:

    • 具有检查和修复表格的大多数工具。
    • MyISAM表格可以被压缩。
    • 支持全文搜索。
    • 不是事务安全的,也不支持外键。

      缺点:

      • 事务回滚将造成不完全回滚

        InnoDB

        具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB是为处理巨大数据量时的最大性能设计。

        InnoDB特点:

        • InnoDB不支持FULLTEXT类型的索引。
        • InnoDB中不保存表的具体行数。执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。
        • 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
        • DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
        • LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。
        • InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表。

          多并发操作时,一般情况下InnoDB比MyISAM性能优秀些。

热点排行