当前位置: 首页 > news >正文

MySQL的存储引擎:

目录

InooDB引擎:

MyISAM引擎:

InooDB引擎与MyISAM存储引擎的区别:

Archive引擎:

Blackhole引擎:

CSV引擎:

Memory引擎:

Federated引擎:

Merge引擎:

NDB引擎:


InooDB引擎:

具备外键支持功能的事务存储引擎。

InooDB是MySQL的默认事务性引擎,被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(commit)和回滚(rollback)。除了增加和查询外,还需要更新、删除,优先选择InooDB存储引擎。支持行级锁,操作时只锁某一行,不对其他行有影响,适合高并发的操作。

InooDB读写操作的处理效率差一些,对内存要求较高。

MyISAM引擎:

主要的非事务处理存储引擎。提供了大量的特性,包括全文索引、压缩、空间函数等。访问速度快,对事物完整性没有要求或者以SELECT、INSERT为主的应用。针对数据统计有额外的常数存储,所以COUNT(*)查询效率很高。只读应用或者以读为主的,优先选择MyISAM存储引擎。

不支持事务、行级锁、外键,崩溃后无法安全恢复。表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作。

InooDB引擎与MyISAM存储引擎的区别:

InooDB提供了良好的事务管理、崩溃修复能力和并发控制。因为InooDB支持事务,所以对于要求事务完整性的场合需选择InooDB。缺点是读写效率稍差,占用的数据空间相对比较大。

MyISAM提供了大量的特性,但是不支持事务、外键,崩溃后无法安全恢复。以读操作和插入操作为主,只有很少的更新、删除操作,并且对事物的要求没那么高,就可以选择MyISAM存储引擎。优点是占用空间小,处理速度快。缺点是不支持事物的完整性和并发性。

对比MyISAM的存储引擎,InooDB写的处理效率差一些,并且会占用更多的磁盘空间以保存数据和索引。

MyISAM只缓存索引,不缓存真实数据,InooDB不仅缓存索引还要缓存真实数据,对内存的要求较高,而且内存大小对性能有决定性的影响。

Archive引擎:

用于数据存档。仅支持插入和查询两种功能(行被插入后不能再修改)。

MySQL5.5以后支持索引功能。

拥有很好的压缩机制,使用zlib库,在记录请求时实时的进行压缩,经常被用来作为仓库使用。

创建ARCHINE表时,存储引擎会创建名称以表名开头的文件。数据文件的扩展名为.ARZ。

同样的数据量下,比MyISAM表要小大约75%,比InnoDB表小大约83%。

采用了行级锁。该ARCHIVE引擎支持auto_increment列属性,auto_increment列可以具有唯一索引或者非唯一索引。在其他列创建索引会导致错误。

适合日志和数据采集应用,适合存储大量的独立的作为历史记录的数据,拥有很高的插入速度,但是对查询的支持较差。

Blackhole引擎:

丢弃写操作,读操作会返回空内容。

Blackhole引擎没有实现任何存储机制,会丢弃所有插入的数据,不做任何保存。但是服务器会记录Blackhole表的日志,所以可以用于赋值数据到备库,或者简单地记录到日志,但是有很多问题。

CSV引擎:

存储数据时,以逗号分隔各个数据项。

CSV引擎可以将普通的CSV文件作为MySQL的表来处理,但不支持索引。可以作为一种数据交换的机制。存储的数据直接可以在操作系统里,用文本编译器,或者excel读取。对于数据的快速导入、导出是有明显优势的。

创建CSV表时,服务器会创建一个纯文本数据文件,其名称以表名开头并带有.CSV扩展名,将数据存储到表中时,存储引擎将其以逗号分隔值格式保存到数据文件中。

Memory引擎:

Memory采用的逻辑时内存,响应速度快,但是当进程崩溃时数据会丢失。要求存储的数据是数据长度不变的格式。

Memory同时支持哈希索引和B+数索引。至少比MyISAM表要快一个数量级。表的大小是受到限制的,主要取决于两个参数,分别是max_rows和max_heap_table_size。

数据文件与索引文件分开存储。每个基于Memory存储引擎的表实际对应一个磁盘文件,文件名与表明相同,类型为frm类型,该文件中只存储表的结构,数据文件都是存储在内存中的。有利于数据的快速处理,提高整个表的处理效率。

缺点是:数据易丢失,生命周期短。

适用场景:

目标数据比较小,而且频繁的进行访问。在内存中存放数据,如果太大会造成内存溢出,可以控制max_heap_table_size控制Memory表的大小。如果数据是临时的,必须立即可用得到,那么可以放在内存中。存储的数据突然间丢失也没有太大关系。

Federated引擎:

访问远程表。

Federated引擎是访问其他的MySQL服务器的一个代理,提供了一种很好的跨服务器的灵活性,但是有很多问题。因此默认是禁用的。

Merge引擎:

管理多个MyISAM表构成的表集合。

NDB引擎:

MySQL集群专用存储引擎。

NDB引擎主要用于MySQL Cluster分布式集群环境。

http://www.dtcms.com/a/324898.html

相关文章:

  • C/C++内存管理函数模板
  • Flutter开发 页面间的值传递示例
  • 基于C语言(兼容C++17编译器)的记账系统实现
  • 虚拟机安装 爱快ikuai 软路由 浏览器无法访问/拒绝连接
  • 数据库面试题集
  • Effective C++ 条款34:区分接口继承和实现继承
  • 数据结构(17)排序(下)
  • 深度剖析 P vs NP 问题:计算领域的世纪谜题
  • Graham 算法求二维凸包
  • PG靶机 - Resourced
  • 【51单片机按键闪烁流水灯方向】2022-10-26
  • 【LeetCode】102 - 二叉树的层序遍历
  • MVC结构变种——第三章核心视图及控制器的整体逻辑
  • idea中使用maven造成每次都打印日志
  • matlab实现随机森林算法
  • [SUCTF 2019]Pythonginx
  • JS中typeof与instanceof的区别
  • 【精彩回顾·成都】成都 User Group×柴火创客空间:开源硬件驱动 AI 与云的创新实践!
  • JS 注释类型
  • ADK[3]历史对话信息保存机制与构建多轮对话机器人
  • scanpy单细胞转录组python教程(四):单样本数据分析之降维聚类及细胞注释
  • 【Canvas与戳记】黑底金Z字
  • 正确使用SQL Server中的Hint(10)— 常用Hint(2)
  • Spring WebSocket安全认证与权限控制解析
  • 研究揭示 Apple Intelligence 数据处理中可能存在隐私漏洞
  • 【redis初阶】------List 列表类型
  • 通过脚本修改MATLAB的数据字典
  • 【15】OpenCV C++实战篇——fitEllipse椭圆拟合、 Ellipse()画椭圆
  • 【人工智能99问】BERT的原理什么?(23/99)
  • Elasticsearch 保姆级入门篇