• MyISAM与InnoDB的区别


    1. 存储结构:

      MyISAM:(文件名以表名开始)

        .frm文件存储表定义

        .MYD文件存储数据

        .MYI文件存储索引

      InnoDB:

        所有的表保存在同一个(也可能多个)数据文件中,表的大小仅受限于操作系统文件的大小,一般为2GB

    2. 存储空间:

      MyISAM:

        可被压缩,存储空间较小。支持三种不同的存储格式:静态表、动态表、压缩表

        默认为静态表,数据末尾不能有空格,否则会将空格去掉

      InnoDB:

        更多的内存和存储空间。在内存中建立专用的缓冲池用于高速缓冲数据与索引

    3. 可移植性、备份与恢复:

      MyISAM:以文件形式存储,转移方便。可单独针对某个表进行备份与恢复。

      InnoDB:相对痛苦

    4. 事务支持:

      MyISAM:不支持事务

      InnoDB:支持事务ACID

    5. Auto-Increment:

      MyISAM:自增长列必须为索引

      InnoDB:同样,但要求若是组合索引,自增长列必须为第一列

    6. 表锁:

      MyISAM:表级锁

      InnoDB:行级锁,大大提高并行性

    7. 全文索引:

      MyISAM:支持FULLTEXT

      InnoDB:本身不支持FULLTEXT,用sphinx插件后支持效果更好

    8. 表主键:

      MyISAM:允许没有任何索引和Key的表存在

      InnoDB:不允许。若没有索引则自动生成一个6字节的索引(按照本人的理解是:行级锁加载索引上)

    9. 表的具体行数:

      MyISAM:保存总行数,select count(*) from <table>;会取出该值

      InnoDB:不保存总行数,select count(*) from <table>;会遍历表,高能耗

      若加了where语句之后,二者相同

    10. CURD:

      MyISAM:select语句的最好选择

      InnoDB:insert与update性能好,delete语句在InnoDB上效果更优,但是delete from <table>;语句InnoDB会进行逐行删除,最好改用truncate <table>

    11. 外键FK:

      MyISAM:不支持

      InnoDB:支持

  • 相关阅读:
    7.3形成团队结构
    第7章 设计构架
    第6章 空中交通管制:高可用性设计案例分析
    5.5安全性战术
    第5章实现质量属性
    4..4.7 使用一般场景进行沟通的概念
    4.4.3性能
    第II部分创建构架
    3.3.2使用结构
    docker容器互联
  • 原文地址:https://www.cnblogs.com/joshua-aw/p/6017650.html
Copyright © 2020-2023  润新知