MySQL ⽀持哪些存储引擎?默认使⽤哪个?MyISAM 和 InnoDB 引擎有什么区别,如何选择?

news2024/11/24 19:51:05

在这里插入图片描述

                💧 M y S Q L ⽀持哪些存储引擎?默认使⽤哪个? M y I S A M 和 I n n o D B 引擎有什么区别,如何选择? \color{#FF1493}{MySQL ⽀持哪些存储引擎?默认使⽤哪个?MyISAM 和 InnoDB 引擎有什么区别,如何选择?} MySQL持哪些存储引擎?默认使哪个?MyISAMInnoDB引擎有什么区别,如何选择?💧          


🌷 仰望天空,妳我亦是行人.✨
🦄 个人主页——微风撞见云的博客🎐
🐳 《数据结构与算法》专栏的文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
💧 《Java学习笔记》专栏的文章是本人在Java学习中总结的一些知识点~ 💐
🥣 《每天一点小知识》专栏的文章可以丰富你的知识库,滴水成河~ 🌊
🪁 希望本文能够给读者带来一定的帮助~🌸文章粗浅,敬请批评指正!🐥


文章目录

    • 🌊MySQL存储引擎比较(官方)
    • 🌊通俗讲解(版本一)
      • MySQL支持哪些存储引擎?
      • 如何选择存储引擎?
    • 🌊通俗讲解(版本二)
      • MySQL支持的存储引擎的详细介绍:
      • 存储引擎选择
  • 🐳结语


🌊MySQL存储引擎比较(官方)

    💧MySQL 支持多种存储引擎,包括 InnoDB、MyISAM、MEMORY、CSV 等。默认情况下,MySQL 使用的存储引擎是 InnoDB。

    💧MyISAM 和 InnoDB 是 MySQL 中最常用的两种存储引擎,它们有以下区别:

  1. 锁定方式不同:MyISAM 使用表级锁定,而 InnoDB 使用行级锁定。在并发访问时,InnoDB 的锁定方式更加精细,可以避免锁定整个表,提高了并发性能。

  2. 数据完整性不同:MyISAM 不支持事务和外键约束,而 InnoDB 支持事务和外键约束,可以保证数据的完整性和一致性。

  3. 读写性能不同:MyISAM 的读写性能相对较高,适合于读密集型应用;而 InnoDB 的写性能相对较高,适合于写密集型应用。

  4. 空间利用率不同:MyISAM 不支持行级别的存储,存储空间利用率较低;而 InnoDB 支持行级别的存储,存储空间利用率更高。

    💧在选择 MyISAM 和 InnoDB 引擎时,需要考虑应用场景和需求:

  1. 如果应用主要是读操作,可以考虑选择 MyISAM 引擎,以提高读取性能。

  2. 如果应用主要是写操作或需要支持事务和外键约束,可以考虑选择 InnoDB 引擎,以保证数据的完整性和一致性。

  3. 如果需要高性能和高可用性,可以考虑选择使用 MySQL 集群或使用多个副本实例,并将数据分布在不同的节点上。

    💧总结:MySQL 支持多种存储引擎,MyISAM 和 InnoDB 是其中最常用的两种,它们有不同的特点和优缺点,在选择时需要根据应用场景和需求进行考虑和权衡。


🌊通俗讲解(版本一)

在这里插入图片描述

MySQL支持哪些存储引擎?

    💧MySQL 支持多种存储引擎,默认为 InnoDB。其中最常用的是 InnoDB 和 MyISAM,它们有以下区别:

  1. 事务支持:InnoDB 支持事务操作,而 MyISAM 不支持事务。
  2. 外键支持:InnoDB 支持外键,而 MyISAM 不支持外键。
  3. 锁定方式:InnoDB 支持行级锁和表级锁,而 MyISAM 只支持表级锁。
  4. 数据库崩溃恢复:InnoDB 支持数据库异常崩溃后的安全恢复(redo log),而 MyISAM 不支持。
  5. 性能比较:InnoDB 的性能较强,无论在读写混合模式下还是只读模式下,随着 CPU 核数的增加,InnoDB 的读写能力呈线性增长。而 MyISAM 因为读写不能并发,处理能力与核数无关。
  6. 索引实现方式:InnoDB 和 MyISAM 都使用 B+ 树来实现索引,但实现方式不同。

如何选择存储引擎?

在读密集的情况下,如果不需要事务支持,也不需要保证数据库的崩溃恢复,可以选择 MyISAM。在其他情况下,可以放心使用 InnoDB。

    💧《MySQL 高性能》一书中有这样的描述:

“不要轻易相信‘MyISAM 比 InnoDB 快’之类的经验之谈,这个结论往往不是绝对的。在很多我们已知场景中,InnoDB 的速度都可以让 MyISAM 望尘莫及,尤其是使用了聚簇索引,或者需要访问的数据都可以放入内存的应用。”


🌊通俗讲解(版本二)

    💧MySQL ⽀持多种存储引擎,每种存储引擎都有各⾃的优缺点。常⽤的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、CSV、BLACKHOLE。其中,InnoDB 是 MySQL 默认的存储引擎。可以使⽤命令 SHOW ENGINES 查看当前数据库⽀持的存储引擎。

SHOW ENGINES

在这里插入图片描述

MySQL支持的存储引擎的详细介绍:

  1. InnoDB:MySQL默认的存储引擎,支持事务、行级锁机制和外键约束。适合处理大量数据和高并发的应用场景,但对于频繁的全表扫描和大量的写操作,性能可能不如MyISAM。

  2. MyISAM:MySQL最早提供的存储引擎,不支持事务、行级锁机制和外键约束。但对于只读或者大量的查询操作,性能比InnoDB更好。

  3. Memory:这种类型的数据表只存在于内存中,使用散列索引,数据的存取速度非常快。由于存在于内存中,因此这种类型常应用于临时表中。

  4. Merge:将多个相同的MyISAM表合并为一个虚表,常应用于日志和数据仓库。

  5. Archive:适用于对于只偶尔需要查询的历史数据进行存储,将数据进行压缩存储,占用空间小,但不支持索引和更新操作。

  6. CSV:将数据以CSV格式存储,适合用于导入和导出数据。

  7. BLACKHOLE:这种存储引擎不实际存储数据,所有写入的数据都会被丢弃,但可以记录数据的写入日志。

    💧可以通过CREATE TABLE语句创建表时指定使用的存储引擎,例如:

CREATE TABLE table_name (column1 datatype, column2 datatype, ...) ENGINE = engine_name;

    💧以上是MySQL支持的存储引擎的介绍。根据不同的需求和应用场景,可以选择适合的存储引擎来优化数据库性能和功能。

CREATE TABLE mytable (id INT, name VARCHAR(20)) ENGINE=InnoDB;

    💧使⽤ SHOW CREATE TABLE 语句可以查看表的创建语句,其中包含了使⽤的存储引擎。例如:

SHOW CREATE TABLE mytable;

    💧输出结果中包含了 ENGINE=InnoDB。

存储引擎选择

    💧 InnoDBMyISAM是两种常见的存储引擎,它们之间有以下区别。选择存储引擎取决于应用程序的需求和特点:

  1. 事务支持:InnoDB支持事务处理,可以使用ACID(原子性、一致性、隔离性、持久性)来保证数据的完整性和一致性。而MyISAM不支持事务处理,不能保证数据的一致性。如果需要使用事务,应选择InnoDB。

  2. 锁机制:InnoDB采用行级锁定,只锁定需要修改的行,提高并发性能。而MyISAM采用表级锁定,会锁定整个表,如果多个用户同时访问一个表,就会出现互相等待的情况,降低并发性能。如果需要高并发性能,应选择InnoDB。

  3. 外键约束:InnoDB支持外键约束,可以通过外键约束实现关联查询和级联删除等功能。而MyISAM不支持外键约束。如果需要使用外键约束,应选择InnoDB。

  4. 性能:MyISAM在读取数据方面的性能表现较好,在大量读取的情况下效率更高。而InnoDB在处理事务和大量并发查询的情况下性能更好。选择存储引擎时需要根据应用程序的读写比例和并发性能的需求来选择。

  5. 其他特性:MyISAM支持全文搜索索引,而InnoDB不支持。MyISAM的表可以被压缩,而InnoDB的表不支持压缩。

    💧因此,在选择存储引擎时,需要根据应用程序的需求和特点进行选择。如果需要支持事务和外键约束,以及并发性能比较重要,应选择InnoDB。如果需要读取数据的性能比较重要,可以选择MyISAM。如果需要全文搜索索引或表压缩,应选择MyISAM

在这里插入图片描述


🐳结语

🐬初学一门技术时,总有些许的疑惑,别怕,它们是我们学习路上的点点繁星,帮助我们不断成长。

🐟积少成多,滴水成河。文章粗浅,希望对大家有帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos tomcat

利用samba共享将所用的的组件复制到/usr/java/中 并给/usr/java设置777权限 Samba配置如下 重启smb服务 进入目录开始安装jdk 在当前目录解压jdk 配置环境变量 使配置生效 查看jdk版本 创建tomcat目录 解压tomcat的安装包到当前目录 进入tomcat配置目录 启动tomcat 先关闭在启…

【微服务】微服务架构设计

文章目录 背景一、流量入口Nginx二、网关三、业务组件四、服务注册中心五、缓存和分布式锁六、数据持久层七、结构型数据存储八、消息中间件九、日志收集十、任务调度中心十一、分布式对象存储 背景 当前,微服务架构在很多公司都已经落地实施了,下面用一…

01_Linux系统安装及使用

一、安装虚拟机软件 VMware16pro 安装链接:https://note.youdao.com/ynoteshare/index.html?id5fc5ad640596a0fbb41a21413ada4dad&typenote&_time1687172973066 二、安装Ubuntu 64 位 Linux系统 安装链接:https://note.youdao.com/ynoteshar…

【动态规划】简单多状态dp问题(1)打家劫舍问题

打家劫舍问题 文章目录 【动态规划】简单多状态dp问题(1)打家劫舍问题1. 按摩师(打家劫舍Ⅰ)1.1 题目解析1.2 算法原理1.2.1 状态表示1.2.2 状态转移方程1.2.3 初始化1.2.4 填表顺序1.2.5 返回值 1.3 编写代码 2. 打家劫舍Ⅱ2.1 题…

seaborn笔记:heatmap

绘制热力图 1 基本使用方法 seaborn.heatmap(data, *, vminNone, vmaxNone, cmapNone, centerNone, robustFalse, annotNone, fmt.2g, annot_kwsNone, linewidths0, linecolorwhite, cbarTrue, cbar_kwsNone, cbar_axNone, squareFalse, xticklabelsauto, yticklabelsauto, m…

C++ 教程(16)——字符串

C 字符串 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾…

Mysql的学习笔记

目录 1、rc 级别的 mvcc 和 rr 级别的mvcc 有啥区别? 2、Innodb与MyIsam的文件结构? 3、Innodb 与MyIsam的简单对比? 4、innodb,Alter table 改字段类型,底层会经历什么过程? 5、Alter table 改字段类型…

Zebec Protocol 与 PGP 深度合作,将流支付更广泛的应用薪资支付领域

随着传统机构的入局,以及相关加密合规法规的落地,加密支付正在成为一种备受欢迎的全新支付方式。加密支付基于区块链底层,不受地域、时间等的限制,能够实时到账,具备去中心化、非许可等特性。 流支付是一种具备创新性的…

Jmeter和Postman做接口测试的区别你知道吗

区别1:用例组织方式 不同的目录结构与组织方式代表不同工具的测试思想,学习一个测试工具应该首先了解其组织方式。 Jmeter的组织方式相对比较扁平,它首先没有WorkSpace(工作空间)的概念,直接是TestPlan(测…

搜索旋转排序数组(leetcode 33)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路思路复杂度分析 5.实现示例参考文献 1.问题描述 整数数组按升序排列,数组中的值互不相同 。 假设数组在预先未知的某个点上进行了旋转。 如数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2]。 搜索一个给定的目…

如何安装Nginx服务

目录 一、Nginx服务 Nginx的并发能力受影响因素 二、Nginx与Apache的差异 Nginx相对于Apache的优点 Apache相对于Nginx的优点 三、阻塞/非阻塞 四、同步/异步 Nginx应用场景 五、编译安装Nginx服务 关闭防火墙和安全机制 安装依赖环境 将相关包导入/opt当中 进入指…

Linux分区的基本概念。

文章目录 前言 一、分区概念 1,书名,主引导纪录(MBR) 2,正文,就是硬盘中纪录的数据。 3,索引相当于硬盘中的分区表 3.1主分区(存放地址&#xff0…

React、Vue项目build打包编译后如何再修改后台请求地址

vue项目大家都了解,开发用 npm run dev/npm run serve。而要上线则必须是先将项目打包编译 npm run build 之后成为了普通的静态网页才可上线进行部署及发布。同样这时候我们也已经将代码全部写好了。如果说要改里面的某个值或者修改请求地址我们应该怎么办呢&#…

IDEA中创建编写JSP

一、安装Tmocat并配置环境 安装请参考:https://www.cnblogs.com/weixinyu98/p/9822048.html 安装请参考:https://www.cnblogs.com/zhanlifeng/p/14917777.html 注意:在安装成功Tomcat测试是否成功安装时,访问“http://localhost:8…

selenium自动化教程及使用java来爬取数据

目录 一、介绍二、下载浏览器驱动1.获取要下载的驱动版本号2.下载驱动 三、Maven如下四、简单使用五、定位器1.定位器2.说明(1) class name 定位器(2) css selector 定位器(3) id 定位器(4) name 定位器(5) link text 定位器(6) partial link text 定位器(7) tag 定位器(8) xpa…

Android 内存检测LeakCanary

在github上下载了一个项目:安装debug版本会产生两个apk,一个是apk本身,一个是Leaks release版本就正常 不会产生这个问题,百思不得其解,第一次遇到这个问题。 看到这篇博客豁然开朗:在build.gradle.kts 里…

3天爆肝整理,性能测试问题汇总+解决办法(重要)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 开始性能测试前需…

入门孪生网络3-------使用一维卷积神经网络1DCNN与孪生网络的组合模型来实现excel数据的分类

文章目录 前言入门孪生网络的第三小节,我尝试使用keras或tensorflow2框架来搭建一个数据分类的网络。大家可以参考的程序思路,我也是小白,可以评论区一起讨论。 一、孪生网络与1DCNN组合网络的搭建思路二、我编写的孪生网络与1DCNN组合网络程…

操作教程:EasyCVR视频融合平台如何配置平台级联?

EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,在视频能力上,平台可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、智能分析以及平台级联等。平台可拓展性强、开放度高、部署轻快&…

干货讲解,财务报表结构分析

财务报表的构成是对企业财务状况、经营成果和现金流量的结构性表述。企业必须重视财务结构对经营业绩的影响,才能解决发展中的问题。 资产质量关注两个角度,一是资产结构,二是现金含量。 资产结构是什么意思呢?就是固定资产和无…