MySQL存储引擎的选择

MySQL存储引擎的选择

简介

    存储引擎是数据库底层的软件组件,数据库管理系统使用引擎进行创建/查询/更新和删除数据操作。不同的存储引擎提供不同的存储机制/索引技巧等功能。不同的存储引擎之间有特殊的功能差异。MySQL目前提供了不少的存储引擎,这也是数据库的核心。

 

使用现状

    基于我工作多年的经验来看,很多开发人员对于数据库都是不熟悉只会基础的语法,更别说给一个表选择合适的存储引擎,基本都是使用InnoDB作为表的存储引擎。当然MySQL默认的存储引擎就是InnoDB因为支持事务。

引擎大全

Use mysql;   show engines; 执行这2个命令就可以看到当前自己版本的数据库存储引擎。我的版本是:5.7.26支持的存储引擎InnoDB,MRG_MYISAM,MEMORY,BLACKHOLE,MyISAM,CSV,ARCHIVE,PERFORMANCE_SCHEMA,FEDERATED(不支持)

 

可以看到在FEDERATED引擎的Support是NO不支持这个引擎了。

InnoDB引擎的Support是DEFAULT就是默认存储引擎,该引擎是支持事务的。

以下会介绍其中的几种引擎。

InnoDB存储引擎

    InnoDB是事务性数据库的首选,支持数据库ACID特性,另外支持行锁定和外键。在MySQL5.5.5后InnoDB就是默认存储引擎。

MyISAM存储引擎

    MyISAM是基于ISAM的存储引擎。在Web/数据存储中比较常用。MyISAM对于插入和查询性能比较高,但是不支持事务。在MySQL5.5.5之前MyISAM是默认存储引擎。

MEMORY存储引擎

    MEMORY存储引擎是将表中的数据存储到内存中,为查询和引用其他数据提供快速访问。

选择存储引擎

功能

MyISAM

Memory

InnoDB

Archive

存储限制

256TB

RAM

64TB

None

支持事务

N

N

Y

N

支持全文索引

Y

N

N

N

支持数索引

Y

Y

Y

N

支持哈希索引

N

Y

N

N

支持数据缓存

N

 

Y

N

支持外键

N

N

Y

N

   

 

 

 

 

 

 

 

 

对于需要提交/回滚/和异常后恢复的事务安全性能,并且可以实现一定的并发控制,可以选择InnoDB。

如果对于事务没有很高的要求,主要用户插入和查询数据例如系统日志可以使用MyISAM。

如果只是基于内存中计算的中间结果临时存储数据量小,而且不需要较高的安全性,可以选择Memory。

如果只有insert和select操作也可以选择Archive可以支持高并发操作,记录日志信息也可以使用这个引擎。

这些数据库引擎都是需要结合实际的表选择,不是说一个数据库只能一种引擎,合适的业务场景使用合适的引擎才是最好的。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie
应支付0元
点击重新获取
扫码支付

支付成功即可阅读