MySQL的小知识点(五)

78 阅读2分钟

「这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战image.png MySQL作为数据库,要持久化数据,是通过存储引擎实现的。通过一组通用的接口层,MySQL将数据库存储层抽离出来,MySQL应用层通过接口和存储层打交道,实现了应用和存储介质分离。MySQL的存储引擎有如下几种:innodb、myisam、Memory、Blackhole、Archive等。

innodb存储引擎

该引擎是MySQL最重要的存储引擎,用过MySQL的用户肯定都听说过它。它为MySQL提供了事务的支持,为我们实现了数据库的ACID特性。如果你不知道如何为业务做数据存储选择存储引擎,那么,它将是你最好的选择。同时,innodb也是MySQL的默认存储引擎,足以见得innodb的强大。

myisam存储引擎

myisam比起innodb来说可能不是很出名。myisam在写入数据的时候,如果数据上有索引,它不是直接将索引写到磁盘上,而是先在内存中做操作,只有在清理缓冲区的时候才将索引写进磁盘。所以,myisam的写入性能很好,而且支持全文索引、压缩、空间函数(GIS)等功能。所以,如果项目中没有别的选择,但是又得支持全文索引等功能,myisam可能是比较好的选项。但是,要注意的是,myisam不支持事务,而且索引是在内存中维护的,如果出现掉电的情况,可能会出现索引信息丢失。

Blackhole引擎

从名字上来看,这个引擎叫黑洞。我们猜也能猜到这个存储引擎的作用,对,它会将所有写入的数据抛弃,不会写入到磁盘。那么这个引擎有什么用呢?在一些特殊的场景下,如复制或者做日志审计时可以用到,总的来说不常用。

Archive引擎

Archive引擎只支持插入和查询操作,会将数据进行压缩,查询进行全表扫描。所以大部分时候可以用来做日志归档等操作,减少磁盘空间的使用。