MySQL进阶学习--day02

存储引擎介绍

    • 1. InnoDB
      • 1.1 介绍
      • 1.2 特点
      • 1.3 文件
      • 1.4 逻辑存储结构
    • 2. MyISAM
      • 2.1 介绍
      • 2.2 特点
      • 2.3 文件
    • 3. Memory
      • 3.1 介绍
      • 3.2 特点
      • 3.3 文件
    • 4. 区别及特点
    • 5. 存储引擎选择
    • 6. InnoDB引擎与MyISAM引擎的区别 ?

上篇文章我们介绍了什么是存储引擎,以及如何在建表时如何指定存储引擎,接下来我们就来介绍下来上面重点提到的三种存储引擎 InnoDB、MyISAM、Memory的特点。

1. InnoDB

1.1 介绍

InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的MySQL 存储引擎。

1.2 特点

  • DML操作遵循ACID模型,支持事务;
  • 行级锁,提高并发访问性能;
  • 支持外键FOREIGN KEY约束,保证数据的完整性和正确性;

1.3 文件

xxx.ibd:xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm-早期的 、sdi-新版的)、数据和索引。

参数:innodb_file_per_table

show variables like 'innodb_file_per_table';

在这里插入图片描述
如果该参数开启,代表对于InnoDB引擎的表,每一张表都对应一个ibd文件。 我们直接打开MySQL的数据存放目录(大家根据自己的mysql实际存放的目录去找): C:\ProgramData\MySQL\MySQL Server 8.0\Data , 这个目录下有很多文件夹,不同的文件夹代表不同的数据库,我们直接打开itcast文件夹。

在这里插入图片描述
可以看到里面有很多的ibd文件,每一个ibd文件就对应一张表,比如:我们有一张表 account,就有这样的一个account.ibd文件,而在这个ibd文件中不仅存放表结构、数据,还会存放该表对应的索引信息。 而该文件是基于二进制存储的,不能直接基于记事本打开,我们可以使用mysql提供的一个指令 ibd2sdi ,通过该指令就可以从ibd文件中提取sdi信息,而sdi数据字典信息中就包含该表的表结构。

在这里插入图片描述

1.4 逻辑存储结构

在这里插入图片描述

  • 表空间 : InnoDB存储引擎逻辑结构的最高层,ibd文件其实就是表空间文件,在表空间中可以包含多个Segment段。
  • 段 : 表空间是由各个段组成的, 常见的段有数据段、索引段、回滚段等。InnoDB中对于段的管理,都是引擎自身完成,不需要人为对其控制,一个段中包含多个区。
  • 区 : 区是表空间的单元结构,每个区的大小为1M。 默认情况下, InnoDB存储引擎页大小为16K, 即一个区中一共有64个连续的页。
  • 页 : 页是组成区的最小单元,页也是InnoDB 存储引擎磁盘管理的最小单元,每个页的大小默认为 16KB。为了保证页的连续性,InnoDB 存储引擎每次从磁盘申请 4-5 个区。
  • 行 : InnoDB 存储引擎是面向行的,也就是说数据是按行进行存放的,在每一行中除了定义表时所指定的字段以外,还包含两个隐藏字段。

2. MyISAM

2.1 介绍

MyISAM是MySQL早期的默认存储引擎。

2.2 特点

  • 不支持事务,不支持外键
  • 支持表锁,不支持行锁
  • 访问速度快

2.3 文件

xxx.sdi:存储表结构信息
xxx.MYD: 存储数据
xxx.MYI: 存储索引

在这里插入图片描述

3. Memory

3.1 介绍

Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。

3.2 特点

  • 内存存放
  • hash索引(默认)

3.3 文件

xxx.sdi:存储表结构信息

4. 区别及特点

在这里插入图片描述

5. 存储引擎选择

在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。

  • InnoDB: 是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。
  • MyISAM : 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。
  • MEMORY:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。MEMORY的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。

6. InnoDB引擎与MyISAM引擎的区别 ?

  1. InnoDB引擎支持事务, 而MyISAM不支持。
  2. InnoDB引擎支持行锁和表锁, 而MyISAM仅支持表锁, 不支持行锁。
  3. InnoDB引擎支持外键, 而MyISAM是不支持的。

主要是上述三点区别,当然也可以从索引结构、存储限制等方面,更加深入的回答。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

来自OpenAI的官方解释:ChatGPT中的GPTs与Assistants API的区别是什么?有什么差异?

本文原文来自DataLearnerAI的官方网站: 来自OpenAI的官方解释:ChatGPT中的GPTs与Assistants API的区别是什么?有什么差异? | 数据学习者官方网站(Datalearner)https://www.datalearner.com/blog/1051701996595465 OpenAI发布的产…

玩转大数据11:数据可视化与交互式分析

1. 引言 数据可视化和交互式分析是大数据领域中的重要方面。随着大数据时代的到来,数据量越来越大,数据类型越来越复杂,传统的数据处理和分析方法已经无法满足我们的需求。数据可视化可以将复杂的数据以简单、直观的方式呈现出来&#xff0c…

建筑学VR虚拟仿真情景实训教学

首先,建筑学VR虚拟仿真情景实训教学为建筑学专业的学生提供了一个身临其境的学习环境。通过使用VR仿真技术,学生可以在虚拟环境中观察和理解建筑结构、材料、设计以及施工等方面的知识。这种教学方法不仅能帮助学生更直观地理解复杂的建筑理论&#xff0…

DM8/达梦 数据库管理员使用手册详解

1.1DM客户端存放位置 Windows:DM数据库安装目录中tool文件夹和bin文件夹中。 Linux:DM数据库安装目录中tool目录和bin目录中。 1.2DM数据库配置助手 1.2.1Windows创建数据库 打开数据库配置助手dbca 点击创建数据库实例 选择一般用途 浏览选择数据库…

关于振动试验

这是试验的说明(来自gbt4710-2009) 这是试验的参数: 一、试验方向: 振动试验中有几个方向 除有关规范另有规定外,应在产品的三个互相垂直方向上进行振动试验。 一般定义产品长边为X轴向,短边为Y轴向&…

【AIGC】Midjourney高级进阶版

Midjourney 真是越玩越上头,真是给它的想象力跪了~ 研究了官方API,出一个进阶版教程 命令 旨在介绍Midjourney在Discord频道中的文本框中支持的指令。 1)shorten 简化Prompt 该指令可以将输入的Prompt为模型可以理解的语言。模型理解语言…

听GPT 讲Rust源代码--src/tools(11)

File: rust/src/tools/rust-analyzer/crates/hir/src/lib.rs 在Rust源代码中,rust/src/tools/rust-analyzer/crates/hir/src/lib.rs文件的作用是定义了Rust语言的高级抽象层次(Higher-level IR,HIR)。它包含了Rust语言的各种结构和…

Nginx基础篇:Nginx搭建、Nginx反向代理、文件服务器部署配置。

Nginx Linux系统安装以及反向代理的配置 简介优点nginx 环境安装常用Nginx 命令nginx 文件服务器搭建 简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点…

画对比折线图【Python】

出这一期想必是我做某个课程作业遇到了。 由于去各个官网下载对比图要钱,我还是不想花钱的!真讨厌!浅浅水一期。 以下是要做的对比图的数据: 代码: from matplotlib import pyplot as plt#设置中文显示plt.rcParams[…

ava即时编译器原理解析及实践

Java即时编译器原理解析及实践 导读 常见的编译型语言如C,通常会把代码直接编译成CPU所能理解的机器码来运行。而Java为了实现“一次编译,处处运行”的特性,把编译的过程分成两部分,首先它会先由javac编译成通用的中间形式——字…

【智能家居】智能家居项目

智能家居项目目录 项目目录结构 完整而典型的项目目录结构 CMake模板 CMake编译运行 README.md 项目说明文档 智能家居项目目录 【智能家居】面向对象编程OOP和设计模式(工厂模式) 【智能家居】一、工厂模式实现继电器灯控制 【智能家居】二、添加火灾检测模块(…

temu发货单在哪里打印

在Temu平台上,打印发货单是进行订单发货的重要步骤之一。通过打印发货单,您可以方便地记录订单信息并与物流公司进行配合。以下是在Temu平台上打印发货单的详细步骤和注意事项。 先给大家推荐一款拼多多/temu运营工具——多多情报通 多多情报通是拼多多…

【python可视化系统源码】基于爬虫与可视化的电影推荐系统课题背景、目的、意义、研究思路、研究方法

该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等学习内容。 目录 一、项目介绍: 二、文档学习资料: 三、模块截图: 四、开发技术与运行环境: 五、代码展示: 六、数据库表截图&#xff1a…

C语言 位运算符 + 应用

常用的位运算符 按位与 快速判断整数的奇偶性 奇数的二进制表示的最低位为1,偶数的二进制表示的最低位为0。 int num 9; if (num & 1) {// num 是奇数 } else {// num 是偶数 }按位异或 交换两个变量的值 int a 5; int b 7; a a ^ b; b a ^ b; a a ^ …

项目一 分析并设计学生管理数据库

项目一 分析并设计学生管理数据库 1,做好管理数据库的知识准备 1.1,初识数据库 **1,DBMS:**数据库管理系统(Database Management System)。数据库 是通过DBMS创建和操作的 容器。 **2,DB:**数据库(data…

【数据结构第 6 章 ③】- 用 C 语言实现邻接表并简单介绍十字链表和邻接多重表

目录 一、邻接表 1.1 - ALGraph.h 1.2 - ALGraph.c 1.3 - Test.c 二、十字链表 三、邻接多重表 一、邻接表 邻接表(Adjacency List)是图的一种链式存储结构。在邻接表中,对图中每个顶点建立一个单链表,第 i 个单链表中的结…

用modelbox server启动流程图,暴露Restful接口

背景 假设你已经搭建了modelbox开发容器,能够使用webUI构建流程图。如果没有请参考昇腾npu上构建modelbox webUI开发容器教程。 现在,本文会说明,如何在终端用命令的方式将流程图暴露为服务,并能够在本地用postman访问。 本文参…

二分查找|双指针:LeetCode:2398.预算内的最多机器人数目

作者推荐 本文涉及的基础知识点 二分查找算法合集 滑动窗口 单调队列:计算最大值时,如果前面的数小,则必定被淘汰,前面的数早出队。 题目 你有 n 个机器人,给你两个下标从 0 开始的整数数组 chargeTimes 和 runnin…

java学习part41泛型

164-泛型-泛型的理解及其在集合、比较器中的使用_哔哩哔哩_bilibili 1.泛型 泛型可以加,加了不用也可以 2.例子 2.1List泛型 2.2Map泛型 新特性var 类似c的auto,可以根据后面赋值推断类型,在这种类型很复杂的时候可以提高可读性 3.自定义泛型…

什么是TDR(威胁检测与响应)

网络安全是被动和主动方法的混合体。过去,企业往往局限于被动的方法,随着合规性和安全策略越来越受到重视,主动方法也越来越受到关注。与其他行业相比,网络安全是高度动态的,网络安全团队采用任何可以帮助他们优化的新…