首页 > 数据库 >Mysql存储引擎,你了解几个?

Mysql存储引擎,你了解几个?

时间:2023-09-14 18:01:27浏览次数:42  
标签:存储 No 支持 索引 引擎 Mysql Yes

引言

MySQL是一种流行的关系型数据库管理系统(RDBMS),它支持多种不同的数据库引擎。数据库引擎是用于存储、管理和检索数据的核心组件,它们直接影响着数据库的性能、可靠性和功能,接下来本文介绍下一些常见的MySQL数据库引擎。

存储引擎

InnoDB引擎

InnoDB 是MySQL默认的事务性数据库引擎,底层存储结构为B+树, B树的每个节点对应innodb的一个page, page大小是固定的,一般设为 16k。其中非叶子节点只有键值,叶子节点包含完成数据。

适用场景:

  • 经常更新的表,适合处理多重并发的更新请求。
  • 支持事务。
  • 可以从灾难中恢复(通过 bin-log 日志等)。
  • 外键约束。只有他支持外键。
  • 支持自动增加列属性 auto_increment。

MyISAM引擎

MyIASM 没有提供对数据库事务的支持,也不支持行级锁和外键,
因此当 INSERT(插入)或 UPDATE(更新)数据时即写操作需要锁定整个表,效率会低一些。

MyIASM 执行读取操作的速度很快,而且不占用大量的内存和存储资源。在设计之初就预想数据组织成有固定长度的记录,按顺序存储的。

适用场景:

  • 不支持事务。
  • 它对于读密集型应用程序具有较好的性能。
  • 它适用于只读或很少更新的应用程序,例如博客、新闻网站等。

Memory引擎

Memory(也叫 HEAP)堆内存:使用存在内存中的内容来创建表,每个 MEMORY 表实际对应一个磁盘文件。 MEMORY 类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用 HASH 索引。但是一旦服务关闭,表中的数据就会丢失掉。 Memory 同时支持散列索引和 B 树索引, B树索引可以使用部分查询和通配查询,也可以使用<,>和>=等操作符方便数据挖掘,散列索引相等的比较快但是对于范围的比较慢很多。

特点:

  • Memory引擎将表存储在内存中,提供了非常高的读写性能。
  • Memory引擎不支持事务,并且在数据库重启时会丢失数据。
  • 它适用于需要快速读写操作的临时数据或缓存。

TokuDB

TokuDB 底层存储结构为 Fractal Tree,Fractal Tree 的结构与 B+树有些类似, 在 Fractal Tree
中, 每一个 child 指针除了需要指向一个 child 节点外,还会带有一个 Message Buffer ,这个Message Buffer 是一个 FIFO 的队列,用来缓存更新操作。

例如,一次插入操作只需要落在某节点的 Message Buffer 就可以马上返回了,并不需要搜索到叶
子节点。这些缓存的更新会在查询时或后台异步合并应用到对应的节点中。


TokuDB 在线添加索引,不影响读写操作, 非常快的写入性能, Fractal-tree 在事务实现上有优势。他主要适用于访问频率不高的数据或历史数据归档。

Archive引擎

  • Archive引擎专门用于存储和归档大量历史数据。
  • 它采用高度压缩的存储格式,在存储空间和性能之间取得了平衡。
  • Archive引擎适用于只需偶尔查询的大型历史数据集。

引擎的选择

功能 MyISAM Memory InnoDB Archive
存储限制 265TB RAM 65TB Node
支持事务 No No Yes No
支持全文索引 Yes No No No
支持数索引 Yes Yes Yes No
支持哈希索引 No Yes No No
支持数据缓存 No N/A Yes No
支持外键 No No Yes No

结论

除了上述几个引擎,MySQL还支持其他一些引擎,如CSV引擎、Blackhole引擎等。每个引擎都有其适用的场景和优化策略,根据项目需求评估选择合适的引擎。

标签:存储,No,支持,索引,引擎,Mysql,Yes
From: https://www.cnblogs.com/GentleJim/p/17703092.html

相关文章

  • 最高提升10倍性能!揭秘火山引擎ByteHouse查询优化器实现方案
     更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 作为企业级数据库的核心组件之一,查询优化器的地位不可忽视。对于众多依赖数据分析的现代企业来说,一个强大且完善的查询优化器能够为数据管理和分析工作带来巨大的便利。 作为火山引......
  • Mysql 常用命令
    1.Mysql命令行登录mysql-h127.0.0.1-uroot-P3306-p2.创建用户CREATEUSER"killer"@"localhost"IDENTIFIEDBY"password";--允许远程登录的话,localhost改为%  3.用户授权GRANTALLPRIVILEGESON*.*TO"username"@"localho......
  • Mysql8.0升级到8.1
    1.官网下载8.1版本本次选择的zip的方式,也可选择MSI的方式(MSI文件下载后双击即可安装)   2.备份旧版中的数据库(使用Navicate工具做的备份)命令方式备份数据:mysqldump-uroot-proot-h127.0.0.1-P3306--all-databases>“F:\MySQL\MySQLServer8.0\data\backup.sql”3......
  • 【MySQL优化】索引失效的场景
    目录索引失效场景未遵循最左前缀匹配导致索引失效索引列参与运算索引列使用了函数类型转换导致索引失效OR引起的索引失效负向查询导致索引失效索引字段使用ISNOTNULL导致失效两列数据做比较会导致索引失效索引失效场景假设存在如下表:CREATETABLE`t_employee`(`id`i......
  • YashanDB混合存储大揭秘:行式存储设计如何为高效TP业务保驾护航(上)
    上一篇文章《揭秘YashanDB融合存储引擎》https://mp.weixin.qq.com/s/yipJcEAH3fVA-_hnUvOiKA从存储结构、事务引擎、高可用等方面介绍了YashanDB存储引擎的整体架构。本篇为大家详细解读YashanDB行式存储技术。背景数据库底层组织数据的方式主要分为行式存储和列式存储两大类。Yas......
  • YashanDB混合存储大揭秘:行式存储设计如何为高效TP业务保驾护航
    接上篇内容插入性能优化YashanDB行式存储主要从提供并发度、批量化处理以及减少日志产生三方面对事务处理过程中的插入性能进行了优化:1提高并发度单线程插入的速度是有限的,在资源充足的场景下,我们希望通过增加线程来提高导入数据的速度。由于数据块不能同时写入,如果两个线程要在同......
  • CentOS6.4邮件配置一: postfix + dovecot + mysql + postfixadmin + Roundcubemail
    参考文章:----------------------------[size=large][color=red]可以考虑:[/color][/size]Posty——Postfix和Dovecot的管理工具[url][/url]Posty是一款基于Web的Postfix&Dovecot管理工具,功能模块包括:API、CLI和WebUI。基于Centos6.2X64系......
  • mysql 递归查询示例
    WITHRECURSIVEsubordinatesAS(SELECT*FROMsys_deptWHEREdept_id=1--这里以员工ID为1为例UNIONALLSELECTe.*FROMsys_depteINNERJOINsubordinatessONe.dept_id=s.parent_id)SELECT*FROMsubordinates;   ......
  • nacos服务多级存储模型
       ......
  • MySQL数据库的DML语法及使用举例
    本文列举数据库的操纵语言的语法及实际使用,以班级表作为举例:班级表:classroom点击查看创建班级表sqlcreatetableclassroom( cidintPRIMARYKEYauto_increment, cnamevarchar(20), desvarchar(50));一、插入数据语法:insertinto表名[(字段名….)]values(值….......