美文网首页
MySQL 常用存储引擎 优缺点

MySQL 常用存储引擎 优缺点

作者: MeOwnLiu | 来源:发表于2018-06-14 21:43 被阅读0次

    InnoDB 引擎

    MySQL 5.5 及以后版本中的默认存储引擎,他的优点如下:

    - 灾难恢复性好

    - 支持事务

    - 使用行级锁

    - 支持外键关联

    - 支持热备份

    - 对于InnoDB引擎中的表,其数据的物理组织形式是簇表(Cluster Table),主键索引和数据是在一起的,数据按主键的顺序物理分布

    - 实现了缓冲管理,不仅能缓冲索引也能缓冲数据,并且会自动创建散列索引以加快数据的获取

    - 支持热备份

    MyISAM引擎

    特性如下:

    - 不支持事务

    - 使用表级锁,并发性差

    - 主机宕机后,MyISAM表易损坏,灾难恢复性不佳

    - 可以配合锁,实现操作系统下的复制备份、迁移

    - 只缓存索引,数据的缓存是利用操作系统缓冲区来实现的。可能引发过多的系统调用且效率不佳

    数据紧凑存储,因此可获得更小的索引和更快的全表扫描性能

    MEMORY 存储引擎

    提供内存表,也不支持事务和外键。显著提高访问数据的速度,可用于缓存会频繁访问的、可以重构的数据、计算结果、统计值、中间结果。

    缺点如下:

    - 使用表级锁,虽然内存访问快,但如果频繁的读写,表级锁会成为瓶颈

    - 只支持固定大小的行。Varchar类型的字段会存储为固定长度的Char类型,浪费空间

    - 不支持TEXT、BLOB字段。当有些查询需要使用到临时表(使用的也是MEMORY存储引擎)时,如果表中有TEXT、BLOB字段,那么会转换为基于磁盘的MyISAM表,严重降低性能

    - 由于内存资源成本昂贵,一般不建议设置过大的内存表,如果内存表满了,可通过清除数据或调整内存表参数来避免报错

    - 服务器重启后数据会丢失,复制维护时需要小心

    如果选择合适的引擎?

    - 是否需要事务支持

    - 是否为高并发,InnoDB实现了行锁,这方面的表现大大优于MyISAM

    - 索引,不同存储引擎的索引实现不同

    - 是否需要外键

    - 高效缓冲数据,InnoDB缓冲数据而MyISAM只缓冲了索引

    - 备份,是否需要支持热备份

    相关文章

      网友评论

          本文标题:MySQL 常用存储引擎 优缺点

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