MySQL存储引擎MyISAM与InnoDB的区别

存储引擎 Storage engine:  如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术方法的实现。

MySQL中常用的存储引擎有以下:

InnoDB 引擎: InnoDB 提供了对数据库事物的支持。并且还提供了行级锁和键的约束。它的设计目的是为了处理大数据容量的数据库系统;

MyISAM 引擎: 不提供事物的支持,也不支持行级锁和外键。

MEMORY 引擎: 所有数据都在内存里,数据的处理速度快,MySQL的内存表技术就是基于此引擎,但是数据安全性不高。

MySQL 5.5 版本之前 默认存储引擎是MyISAM,5.5之后默认存储引擎改为了InnoDB。

MyISAM适合查询以及插入的应用InnoDB适合频繁的修改以及涉及到安全性较高的应用它们主要有以下区别:

  1. InnoDB支持事务,MyISAM 不支持事务。
  2. InnoDB最小的锁粒度行级锁,MyISAM最小的锁粒度是表级锁。一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,因此并发访问受限。这也是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一;
  3. InnoDB支持外键,MyISAM 不支持。
  4. InnoDB索引是聚簇索引,MyISAM 是非聚簇索引。、
  5. InnoDB 在MySQL 5.6 之前 不支持(FULLTEXT) 全文索引
  6. InnoDB的叶子节点存储着行数据,因此主键索引非常高效 ,MyISAM 的叶子节点是存储的行数据地址 ,需要再一次寻址才能找到数据。
  7. MyISAM 可被压缩 存储空间较小。 InnoDB 的表需要更多内存和存储,它会在主内存中建立其专用的缓存池用于高速缓存数据和索引。
  8. MyISAM 的数据以文件形式存储在数据转移中比较方便。 InnoDB 免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump,在数据量达到几十G的时候就相对痛苦了。
  9. MyISAM保存有表的总行数,如果select count(*) from table;会直接取出出该值。
    没有保存表的总行数(只能遍历),如果使用select count(*) from table;就会遍历整个表,消耗相当大,但是在加了wehre条件后,myisam和innodb处理的方式都一样。

如果没有特别需求,使用默认的InnoDB 就行了。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值