快速了解:MySQL InnoDB和MyISAM的区别

目录

  • 一、序言
  • 二、InnoDB和MyISAM对比
    • 1、InnoDB特性支持如下
    • 2、MyISAM特性支持如下
  • 三、两者核心区别
    • 1、事务支持
    • 2、锁机制
    • 3、索引结构
    • 4、缓存机制
    • 5、故障恢复
    • 6、使用场景

一、序言

在MySQL 8.0中,InnoDB是默认的存储引擎。除了InnoDB,MySQL还支持其它的存储引擎,比如MyISAMMEMORYCSVARCHIVEBLACKHOLEMERGEFEDERATE等。

除非在创建表的时候手动指定存储引擎,不然创建的表都是InnoDB管理的表。

今天我们根据官方文档详细聊聊InnoDB和MyISAM的区别。

二、InnoDB和MyISAM对比

1、InnoDB特性支持如下

特性是否支持
B-tree indexes
备份/时间点恢复是 (Server层实现而不是存储引擎层)
集群数据库支持
聚簇索引
压缩数据
数据缓存
加密数据是(Server层经过加密函数实现)
外键支持
全文搜索索引是(MySQL 5.6及以上版本支持)
空间数据类型支持
空间索引支持是(MySQL 5.7及以上版本支持)
哈希索引
索引缓存
锁粒度行级
MVCC
复制支持是 (Server层实现,而不是存储引擎层)
存储上限64TB
T-tree索引
事务
数据字典更新统计

2、MyISAM特性支持如下

特性是否支持
B-tree indexes
备份/时间点恢复是 (Server层实现而不是存储引擎层)
集群数据库支持
聚簇索引
压缩数据
数据缓存
加密数据是(Server层经过加密函数实现)
外键支持
全文搜索索引
空间数据类型支持
空间索引支持
哈希索引
索引缓存
锁粒度表级
MVCC
复制支持是 (Server层实现,而不是存储引擎层)
存储上限256TB
T-tree索引
事务
数据字典更新统计

三、两者核心区别

1、事务支持

  • InnoDB:支持事务,提供ACID特性,适合需要事务保证的应用。
  • MyISAM:不支持事务,每次操作视为独立才做,不保证原子性,适合读多写少的应用。

2、锁机制

  • InnoDB:支持行级锁和表级锁,行级锁粒度更小,适合高并发场景。
  • MyISAM:只支持表级锁,读写操作都会锁表,适合读多写少的场景。

3、索引结构

  • InnoDB:使用聚簇索引,数据文件和索引文件合并在一个.ibd文件,提高查询效率。
  • MyISAM:使用非聚簇索引,数据文件和索引文件是分开的,分为.MYD(MyData).MYI(MYIndex)文件,索引文件较大,但查询速度快。

4、缓存机制

  • InnoDB:有自己的Buffer Pool,用于缓存数据和索引,减少磁盘访问。
  • MyISAM:只缓存索引文件,不缓存数据文件,每次查询都需要从磁盘读取访问。

5、故障恢复

  • InnoDB:通过Redo log和Undo log可以进行数据的恢复和回滚,适合需要保证数据一致性和持久性的场景。
  • MyISAM:故障恢复能力较弱,可能导致数据丢失。

6、使用场景

  • InnoDB:适用于对事务要求较高、数据一致性和完整性要求严格的应用场景,如银行、电商系统等。
  • MyISAM:适用于一些对事务要求不高、以读为主的应用场景,如数仓、报表系统等。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序原生-利用setData()对不同类型的数据进行增删改

1. 声明和绑定数据 wxml文件 <view> {{school}} </view> <view>{{obj.name}}</view> <view id"{{id}}" > 绑定属性值 </view> <checkbox checked"{{isChecked}}"/> <!--算数运算--> <view>{{ id …

Python 课程20-Scikit-learn

前言 Scikit-learn 是 Python 中最流行的机器学习库之一&#xff0c;它提供了多种用于监督学习和无监督学习的算法。Scikit-learn 的特点是简单易用、模块化且具有高效的性能。无论是初学者还是专业开发者&#xff0c;都可以借助它进行快速原型设计和模型开发。 在本教程中&a…

栈与队列相关知识(二)

目录 Java中栈&#xff08;Stack&#xff09; 一. 常用方法 1.push(E item) 2.pop() 3.peek() 4.empty() 二. 常用方法扩展 1. search(Object o) 2. clone() 3. contains(Object o) 4. size() 5. toArray() Java中队列&#xff08;Queue&#xff09; 一.常用方法&…

android compose ScrollableTabRow indicator 指示器设置宽度

.requiredWidth(30.dp) Box(modifier Modifier.background(Color.LightGray).fillMaxWidth()) {ScrollableTabRow(selectedTabIndex selectedTabIndex, // 默认选中第一个标签containerColor ColorPageBg,edgePadding 1.dp, // 内容与边缘的距离indicator { tabPositions…

《OpenCV 计算机视觉》—— 图像拼接

还未写完&#xff01;&#xff01;&#xff01; 下面是两张需要拼接的图片 完整代码&#xff1a; import cv2 import numpy as np import sysdef cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)def detectAndDescribe(image):gray cv2.cvtColor(image, cv2.COLOR_…

C#测试调用Ghostscript.NET浏览PDF文件

Ghostscript.NET是针对Ghostscript的C#封装库&#xff0c;支持解析PostScript语言、操作PDF文件等。使用Ghostscript.NET的GhostscriptViewer 模块可以以图片形式查看PDF文档。本文学习并测试调用Ghostscript.NET模块打开及浏览PDF文件的基本用法。   Ghostscript.NET目前主要…

线性模型到神经网络

&#x1f680; 在初始神经网络那一节&#xff08;链接如下&#xff1a;初始神经网络&#xff09;的最后&#xff0c;我们通过加大考虑的天数使得我们最后得到的模型Loss最终停留在了0.32k&#xff0c;当我们在想让模型更加准确的时候&#xff0c;是做不到的&#xff0c;因为我们…

网站建设中常见的网站后台开发语言有哪几种,各自优缺点都是什么?

市场上常见的网站后台开发语言有PHP、Python、JavaScript、Ruby、Java和.NET等。这些语言各有其独特的优缺点&#xff0c;适用于不同的开发场景和需求。以下是对这些语言的具体介绍&#xff1a; PHP 优点&#xff1a;PHP是一种广泛用于Web开发的动态脚本语言&#xff0c;特别适…

python UNIT 3 选择与循环(2)

目录 1。循环的优化 经典优化分析&#xff1a; 未优化的代码&#xff1a; 细节分析&#xff1a; 优化后的代码&#xff1a; 优化的细节&#xff1a; 性能对比 优化的关键在于&#xff1a; 经典习题讲解&#xff1a;(紫色的解析请重点关注一下) 1。例三 个人代码解析…

Go实现RabbitMQ消息模式

【目标】 go实现RabbitMQ简单模式和work工作模式 go实现RabbitMQ 消息持久化和手动应答 go实现RabbitMQ 发布订阅模式 go使用MQ实现评论后排行榜更新 1. go实现简单模式 编写路由实现生产消息 实现生产消息 MQ消息执行为命令行执行&#xff0c;所以创建命令行执行函数mai…

机器学习-KNN分类算法

1.1 KNN分类 KNN分类算法&#xff08;K-Nearest-Neighbors Classification&#xff09;&#xff0c;又叫K近邻算法。它是概念极其简单&#xff0c;而效果又很优秀的分类算法。1967年由Cover T和Hart P提出。 KNN分类算法的核心思想&#xff1a;如果一个样本在特征空间中的k个最…

聊一聊 C#中有趣的 SourceGenerator生成器

一&#xff1a;背景 1. 讲故事 前些天在看 AOT的时候关注了下 源生成器&#xff0c;挺有意思的一个东西&#xff0c;今天写一篇文章简单的分享下。 二&#xff1a;源生成器探究之旅 1. 源生成器是什么 简单来说&#xff0c;源生成器是Roslyn编译器给程序员开的一道口子&am…

【架构】NewSQL

文章目录 NewSQLTiDBTiDB 主要组件特点使用场景安装与部署 推荐阅读 NewSQL NewSQL是一种数据库管理系统(DBMS)的类别&#xff0c;它结合了NoSQL数据库的可扩展性和传统SQL数据库的事务一致性。具体来说&#xff0c;NewSQL数据库旨在解决传统关系型数据库在处理大规模并发事务…

我是如何将 Java 基础 docker 镜像大小从 674Mb 优化到 58Mb的

我是如何将 Java 基础 docker 镜像大小从 674Mb 优化到 58Mb的 如果您是 Java 开发人员&#xff0c;并且正在使用 Docker 打包应用程序&#xff0c;您可能已经注意到&#xff0c;即使是“hello world”类型的项目&#xff0c;最终镜像的大小也可能非常大。在本文中&#xff0c…

D18【python接口自动化学习】-python基础之内置数据类型

day18 综合练习&#xff1a;实现手机通讯录&#xff08;下&#xff09; 学习日期&#xff1a;20240925 学习目标&#xff1a;内置数据类型--27 小试牛刀&#xff1a;如何使用类型转换实现手机通讯录&#xff08;下&#xff09; 学习笔记&#xff1a; 实现手机通讯录 案例文…

【C语言】字符和字符串函数(2)

文章目录 一、strncpy函数的使用二、strncat函数的使用三、strncmp函数的使用四、strstr的使用和模拟实现五、strtok函数的使用六、strerr函数的使用 一、strncpy函数的使用 我们之前学习的strcpy的作用是把源字符串拷贝到目标空间内&#xff0c;而且经过我们的模拟实现&#x…

【Linux:线程概念】

目录 概念&#xff1a; 创建线程的函数&#xff1a;​编辑 ​编辑 有多进程为什么还需要有多线程&#xff1f; 线程调度的成本为什么低&#xff1f; 进程与线程的区别&#xff1a; 概念&#xff1a; 线程是CPU的基本调度单位&#xff0c;在进程内部运行。在内核中&#xff…

数据库系统

数据库管理系统 DBMS Database Management System分为三类&#xff1a; 关系数据库系统&#xff08;Relation Database System&#xff09; 面向对象数据库系统 (Object-Oriented Database System) 对象关系数据库系统 (Object-Oriented Relation Database System) 数据库设…

Stable Diffusion绘画 | SDXL模型使用注意事项

注意事项 SDXL模型的使用&#xff0c;对电脑配置要求更高&#xff0c;需要 8GB 以上显存的显卡SDXL模型兼容性不太好&#xff0c;容易出现错误&#xff0c;对 Mac 电脑不友好只能选择 SDXL模型 训练的 LoRA 使用不能使用旧的 VAE文件 SDXL 专用 VAE 文件&#xff1a;sdxl_vae.…

在矩池云使用 Llama-3.2-11B-Vision 详细指南

Llama 3.2-Vision是Meta开发的一系列多模态大型语言模型&#xff08;LLMs&#xff09;&#xff0c;包含11B和90B两种规模的预训练和指令调整模型。 这些模型专门优化用于视觉识别、图像推理、字幕生成和回答有关图像的一般问题。Llama 3.2-Vision模型在常见行业基准测试中的表…