美文网首页
MySQL常用的两种存储引擎

MySQL常用的两种存储引擎

作者: 噫那里有条咸鱼 | 来源:发表于2017-05-04 15:58 被阅读114次

    mysql有两种存储引擎:InnoDB和MyISAM。mysql5.5之前是默认MyISAM,mysql5.5之后改为InnoDB,可通过修改配置文件中的default-storage-engine,来修改默认引擎。


    MyISAM

    1. 每个MyISAM在磁盘是存储为三个文件,第一个文件名以表的名字开始,扩展名为:
    .frm 文件存储表定义
    .MYD 数据文件的扩展
    .MYI 索引文件的扩展
    
    1. MyISAM类型的表强调访问性能,执行速度比InnoDB更快,如果需要执行大量的select,MyISAM是较好的选择。
    2. MyISAM不支持事务,也不支持外键。
    3. MyISAM只支持到表级锁。
    4. 执行select count(*)form table时,MyISAM只需要读取保存好的行数即可,当语句中含有where条件时,两种表都需要扫描一遍具体的行数。
    5. MyISAM支持全文类型索引。
    6. 对于MyISAM表,AUTO_INCREMENT列可以是组合索引的其他列,插入记录后,自动增长列是按照组合索引到前面几列排序后递增的。

    InnoDB

    1. InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB。
    2. 如果需要执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表;DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
    3. InnoDB支持事务安全,外键等功能。
    4. InnoDB提供行级锁,同时行锁不是绝对的,当执行SQL语句时,MySQL不能确定要扫描的范围时,InnoDB表统一会锁全表。
    5. InnoD不保存表的具体行数,在执行select count(*) form table时,InnoDB会扫描一遍整个表来计算有多少行。
    6. InnoDB不支持全文索引
    7. 对于InnoDB表,自动增长列必须是索引,如果是组合索引,也必须是组合索引的第一列。

    MySQL存储引擎的选择:

    MySQL有多种存储引擎:MyISAM、InnoDB、MERGE、MEMORY、BDB等;每种引擎有各自的优缺点,但是常用的主要是MyISAM和InnoDB两个。
    主要区别在于:

    1. InnoDB支持事务,MyISAM不支持。
    2. MyISAM适合查询和插入为主的应用,InnoDB适合频繁的修改和安全性较高的应用。
    3. 清空整个表时,InnoDB是一行一行删除效率很低,MyISAM则会重建表。
    4. InnoDB不支持FULLTEXT类型的索引。
    5. InnoDB支持外键,MyISAM不支持。
    6. InnoDB支持行级锁,MyISAM支持表级锁,在进行update时会锁表,并发量相对较小。

    参考:http://www.jianshu.com/p/e30ea922e08f

    相关文章

      网友评论

          本文标题:MySQL常用的两种存储引擎

          本文链接:https://www.haomeiwen.com/subject/tjzrtxtx.html