MySQL几种存储引擎的学习

MySQL中常见的几种引擎


MySQL中常用的存储引擎有四种,分别是MyISAM、InnoDB、MEMORY、ARCHIVE。下面依次来对这几种存储引擎做一些总结对比。

MyISAM

在5.5.5版本之前这是MySQL的默认存储引擎,不支持数据库事务,不支持行级锁和外键。所以它在插入数据时需要锁定整张表,效率较低。

但是相对于InnoDB,它的优点在于存储了表的行数,在查询数据条数的时候可以直接读取,不用再查询整张表。如果读的操作远远多于写操作,可以采用这种引擎。

优点:空间占用少,处理的速度快,表存储成文件格式,便于跨平台。

缺点:不支持事务的完整性和并发性。

InnoDB

它的设计目标是为了处理大容量数据库系统,它本身就是基于SQL后台的完整数据库系统,MySQL运行Innodb会在内存中建立缓冲池,用于缓冲数据和索引。
但是它没有保存存储表的行数,当执行查询表行数语句时需要扫描整个数据表,效率较慢。但是在做插入(insert)和更新(update)操作时,因为其支持事务等特性,效率就会更高一些。

应用场景:

  • 如果需要对事务的完整性要求比较高(如银行)、对并发控制有需求(如售票)。应该选择InnoDB。
  • 如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

优点:提供了对数据库事务ACID的支持,
实现了SQL标准的四种隔离级别,
提供了行级锁和外键约束。

缺点:读写效率较差,占用的空间相对较大。

MEMORY

这种引擎相对于前面的一些存储引擎,有些不一样,它的数据存储再内存中。
每一个基于memory的存储引擎的表实际对应一个磁盘文件,其文件名和表名一样。类型为.frm。文件中只存储表的结构,数据文件在内存中存储。所以对表中数据的操作就非常快。

memory存储引擎默认使用的hash索引,速度要比使用B-+Tree要快。如果要使用B树需要在建表的时候引用。

它数据存储的特殊性也导致了当MySQL进程异常时,关机或重启都会导致数据消失,所以基于memory存储引擎中的表生命周期都很短。

ARCHIVE

这种引擎会用zlib对表数据做压缩,所以它更节约磁盘I/O,同样多的数据量,Archive存储引擎比MyISAM、InnoDB更加节约存储空间。

不支持对数据的修改,它可以存储一些不用修改特殊的数据,如:日志类,不会再改变的数据信息。

Archive支持高并发的插入操作,但是本身不是事务安全的。

注意同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。如果数据库中还有一部分只做写操作的数据块可以使用Archive,节省空间

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值