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:支持

转载于:https://www.cnblogs.com/joshua-aw/p/6017650.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值