zoukankan      html  css  js  c++  java
  • 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:支持

  • 相关阅读:
    美化的滚动条
    网站系统开发参考网址
    正则表达式获取URL参数
    类实例 及 实例化对象 对象引用
    C# 静态方法 静态属性 调用静态方法
    C# 静态方法调用非静态方法
    winform 窗体间传值
    从数据库中读出数据并输出
    数据库链接字符串
    DbHelper
  • 原文地址:https://www.cnblogs.com/joshua-aw/p/6017650.html
Copyright © 2011-2022 走看看