【MySQL】基础实战篇(3)—九大储存引擎详解

这篇具有很好参考价值的文章主要介绍了【MySQL】基础实战篇(3)—九大储存引擎详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

InnoDB引擎

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

InnoDB是mysql默认事务型引擎,它被设计处理大量短期事务。可以确保事务的完整提交和回滚。
除了增加和查询外,还需要更新,删除操作等优先选用InnoDB引擎
InnoDB是为处理巨大数据量的最大性能设计。
相对于MyISAM存储引擎来说,InnoDB的处理效率差一些 并且会占用更多的磁盘空间以保存数据和·索引。
MyISAM存储引擎只缓存索引,不缓存真实数据,InnoDB不仅缓存索引,而且还要缓存真实数据,对内存要求较高。而且内存大小对性能有绝对性影响。

举例:
数据库 a ,表 b

如果表b采用InnoDB存储引擎 data\a中会产生一个或两个文件

==b.frm ==:表述表结构文件,字段长度等

如果采用系统表空间模式的,数据信息和索引信息都储存在ibdata1
如果采用独立表空间存储模式 ,data\a中还会产生b.ibd文件(储存数据信息和索引信息)

此外:
在,MySQL5.7中会在data\a目录下生成db.opt文件,用于保护数据库的相关配置。而在mysql8.0后不会再提供db.opt文件。
并且MySQL8.0中不会再生成b.frm文件,而是合并在b.ibd文件中。

MyISAM引擎

主要的非事务处理存储引擎
MyISAM提供了大量的特性,包括全文索引,压缩,空间函数等。但是MyISAM不支持 事务,外键,行级锁。最大的缺陷·就是崩溃后无法安全恢复。
MyISAM优势是访问速度快,对事务完整性没有要求或者以select,insert为主的应用。
针对数据统计有额外的常数存储,故而count(*)的查询效率很高。

如果表b采用MyISAM存储引擎 data\a中会产生三个文件。

MySQL5.7中b.frm文件中: 描述表结构文件,字段长度等。
MySQL8.0中b.×××.sdi文件中:描述表结构文件,字段长度等。
b.MYD(MYDATA):数据信息文件,储存信息文件,储存数据信息(如果采用独立表存储模式)
b.MYI(MYIndex):存放索引信息文件

对比

对比项 MyISAM InnoDB
外键 不支持 支持
事务 不支持 支持
行级锁 表锁,即使一条记录也会锁住整个表,不适合高并发的操作 行锁,操作时只会锁一行,不会对其他行有影响,适合高并发操作
缓存 只缓存索引,不缓存真实数据 缓存索引和真实数据
自带系统使用 使用 不使用
关注点 性能:节省资源,消耗少,简单业务 事务:并发写,事务,更大资源
默认安装 yes yes
默认使用 no yes

Archive引擎

archive是归档的意思
仅仅支持插入和查询两种功能(行被插入后不能再修改)。
在MysQL5.5以后支持索引功能。
拥有很好的压缩机制,使用z1ib压缩库,在记录请求的时候实时的进行压缩,经常被用来作为仓库使用。

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

根据英文的测试结论来看,同样数据量下,Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%。
ARCHIVE存储引擎采用了行级锁。该ARCHIVE引擎支持AUTO_INCREMENT列属性。AUTO_INCREMENT列可具有唯一索引或非唯一索引,尝试在任何其他列上创建索引会导致错误。
archive表适合日志和数据采集(档案)类应用,适合存储大量的独立的作为历史记录的数据。拥有很高的插入速度但是对查询的支持较差。

Blackhole引擎

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

Blackhole引擎没有实现任何存储机制,它会丢弃所有插入的数据,不做任何保存。

但服务器会记录Backhole表的日志,所以可以用于复制数据到备库,或者简单地记录到日志。但这种应用方式会碰到很多问题,因此并不推荐。

CSV引擎

存储数据时,以逗号分隔各个数据项
CSV引擎可以将普通的CSV文件作为MvSOL的表来处理,但不支持索引
CSV引擎可以作为一种数据交换的机制,非常有用。
CsV存储的数据直接可以在操作系统里,用文本编辑器,或者excel读取。
对于数据的快速导入、导出是有明显优势的。
创建CSV表时,服务器会创建一个纯文本数据文件,其名称以表名开头井带有.csv扩展名,当你将数据存储到集中时,存储引擎将其以逗号分隔值格式保存到数据文件中。

Memoy引擎

采用的逻辑介质是内存,响应速度很快,但是当mys qld守护进程崩溃的所时候数据会丢失。

另外,要求存储的数据是数据长度不变的格式,比如.Blob和Text米型的数据不可用

主要特征
Memory同时支持哈希(HASH)索引和B+树索引。
哈希索引相等的比较快,但是对于范围的比较慢很多。
默认使用哈希(HASH)索引,其速度要比使用B型树(BTREE)索引快。
如果希望使用B树索引,可以在创建索引时选择使用

Memory表至少比MyISAM表要快一个数量级。

MEMORY表的大小是受到限制的,表的大小主要取决于两个参数
分别是max_rows和max_heap_table_size. 其中max_rows可以在创建表时指定
数据文件与索引文件分开存储
每个基于MEMORY存储引擎的表实际对应一个磁盘文件,该文件的文件名与表名相同,类型为.frm类型,该文件中只存储表的结构,而其数据文件都是存储在内存中的。有利于数据的快速处理,提供整个表的处理效率。
缺点:其数据易丢失,生命周期短。基于这个缺陷,选择MEMORY存储引1警时需要特别小心

4.7Federated引擎

访问远程表
Federated引擎是访问其他MySQL服务器的一个代理,尽管该引擎看起来提供了一种很好的跨服务器的灵活性,但也经常带来问颗,因此默认是禁用的。

Merge引擎

管理多个MylSAM表构成的表集合

NDB引擎

MysQL集群专用存储引擎
也做NDB Cluster存储引擎,主要用于MySQL Cluster分布式集群环境,类似于Oracle的RAC集群。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3gi69bh9654ws文章来源地址https://www.toymoban.com/news/detail-714917.html

到了这里,关于【MySQL】基础实战篇(3)—九大储存引擎详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【进阶篇】MySQL 存储引擎详解

    MySQL是世界上最受欢迎的开源关系数据库管理系统之一。 MySQL的一个主要特性是其插件式存储引擎架构 ,这意味着你可以根据特定的工作负载和需求选择不同的存储引擎。 它支持多种存储引擎。下面将详细解释MySQL的存储引擎,包括 InnoDB 、 MyISAM 、 Memory 等。每种存储引擎都

    2024年02月09日
    浏览(31)
  • Mysql之账号管理、建库以及四大引擎详解

    目录 一、MySql数据库引擎 1.1 什么是数据库引擎? 1.2 MySQL常见数据库引擎 1.2.1.InnoDB(MySQL默认引擎) 1.2.2.MyISAM 1.2.3.MEMORY(Heap) 1.3 存储引擎查看 二、建库 2.1.默认数据库介绍  2.2.建库 2.3.查看数据库 2.4.删除数据库 三、账号管理 3.1.创建用户 3.1.1.创建用户并设置登陆密码 3.1.

    2024年02月12日
    浏览(32)
  • MySQL高级-存储引擎+存储过程+索引(详解01)

    目录 1.mysql体系结构  2.存储引擎 2.1.存储引擎概述 2.2.1.InnoDB 2.2.2.MyISAM 2.2.3.存储引擎选择 3.存储过程 3.1.存储过程和函数概述  3.2.创建存储过程 3.3.调用存储过程 3.4.查看存储过程 3.5.删除存储过程 3.6.语法 3.6.1.变量 3.6.2.if条件判断 3.6.3.传递参数 3.6.4.case结构 3.6.5.while循环 3.

    2024年02月13日
    浏览(31)
  • 【数据结构——9大基础排序】一文掌握九大经典排序(配有详细图文说明!!!)

    算法基本思想:(从大到小排序) 在一个 非递减 的有序数组中,要新增一个元素 x ,有两个方法: 1.从数组的头部开始向后遍历,寻找 第一个比x 大 的元素 y ,从y元素开始的所有元素全部向后移动,最后将x元素插入数组。(×) 2.从数组的尾部开始向后向前遍历,寻找 第

    2024年02月08日
    浏览(33)
  • 云计算储存基础(3)

    分布式存储 分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络将企业每台机器上的磁盘空间集中起来,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散地存储在企业的各个角落。 分布式存储使用的设备一般是普通服务器,而非存储设

    2023年04月08日
    浏览(25)
  • 【游戏引擎Easy2D】基于基础类型展开的监听器学习详解

       🧛‍♂️ iecne个人主页: 点赞关注收藏评论支持哦~ 💡每天 关注 iecne的作品,一起进步 👉本文收录 专栏 :【C++游戏引擎】 🐳希望大家多多支持🥰一起进步呀! 哈喽大家好,我是 iecne ,本期为大家带来的是CPP/C++【游戏引擎Easy2D】一篇打通引擎顶级类型,Listener。包

    2024年01月17日
    浏览(63)
  • 【Docker】AUFS、BTRFS、ZFS、储存池详解

    洁洁的个人主页 我就问你有没有发挥! 知行合一,志存高远。 前言 Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之

    2024年02月13日
    浏览(22)
  • Jmeter调用Oracle、pg、MySql 储存过程,实例,获取返回值

    JDBC Request: 1、重要参数说明: Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致 Query:填写的sql语句未尾不要加“;” Parameter valus:参数值 Parameter types:参数类型,可参考:Javadoc for java.sql.Types Variable names:保存sql语句返回结果

    2024年02月08日
    浏览(39)
  • matlab读取xml文档并储存为.mat文件详解

    起因是需要将c++中的矩阵传入matlab中进行处理,发现xml文档可以保留精度,因此选择xml作为中介完成从c++到matlab的数据传递。 xml文档结构如下: 其中data中为用科学记数法保留的float型变量。 使用MATLAB内置的xmlread函数读取XML文件,然后将数据保存到MAT文件中。matlab读取xml的代

    2024年02月11日
    浏览(35)
  • MYSQL数字函数详解和实战

    MySQL提供了许多数字函数,用于对数字进行各种计算和处理。以下是一些常用的MySQL数字函数。 内容有点多,建议收藏以备后续用到查阅参考 。 目录 一、SIGN 取数字的符号 二、ABS 取绝对值 三、COS 取余弦值 四、ACOS 取反余弦值 五、SIN 取正弦值 六、ASIN 取反正弦值 七、TAN 取

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包