【Mysql】Mysql的存储引擎

news2025/1/13 14:20:38

【Mysql】Mysql的存储引擎

文章目录

  • 【Mysql】Mysql的存储引擎
    • 1.概述
    • 2. 特点
      • 2.1 InnoDB
      • 2.2 MyISAM
      • 2.3 Memory
      • 2.4 区别
    • 3. 选择

1.概述

**存储引擎:存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。**存储引擎是基于表的,而不是 基于库的,所以存储引擎也可被称为表类型。

我们可以在创建表的时候,来指定选择的存储引擎,如果 没有指定将自动选择默认的存储引擎。

建表时指定存储引擎:

CREATE TABLE 表名(
字段1 字段1类型 [ COMMENT 字段1注释 ] ,
......
字段n 字段n类型 [COMMENT 字段n注释 ]
) ENGINE = INNODB [ COMMENT 表注释 ] ;

查询所有的存储引擎信息:

show engines;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6zMYsDmx-1674626881538)(C:\Users\zhuhuanjie\AppData\Roaming\Typora\typora-user-images\image-20230125111356043.png)]


2. 特点

比较常见的存储引擎为 InnoDBMyISAMMemory 三种。

2.1 InnoDB

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

1)特点:

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

2)文件:

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

参数:innodb_file_per_table

查看该参数是否开启:

show variables like 'innodb_file_per_table';

如果该参数开启,代表对于InnoDB引擎的表,每一张表都对应一个ibd文件。 我们直接打开MySQL的 数据存放目录: D:\Mysql\mysql-5.7.24-winx64\data , 这个目录下有很多文件 夹,不同的文件夹代表不同的数据库。

3)逻辑存储结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-coeqXCyj-1674626881541)(C:\Users\zhuhuanjie\AppData\Roaming\Typora\typora-user-images\image-20230125112648047.png)]

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

2.2 MyISAM

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

1)特点

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

2)文件

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

2.3 Memory

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

1)特点

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

2)文件

  • xxx.sdi:存储表结构信息

2.4 区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YlvbkwhJ-1674626881541)(C:\Users\zhuhuanjie\AppData\Roaming\Typora\typora-user-images\image-20230125113739460.png)]

InnoDB不仅支持行锁,还支持表锁。


3. 选择

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

InnoDB: 是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操 作,那么InnoDB存储引擎是比较合适的选择。

MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完 整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。

MEMORY:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。MEMORY的缺陷就是 对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。

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

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

相关文章

HTTPS工作原理详解加密(TLS握手)过程

HTTPS概念 HTTPS就是一个有安全保障的HTTP通信,我们都知道,http是明文传输的,http报文是人肉眼就可识别的ASCII码,在通信过程中,http报文很容易被黑客窃听、篡改、伪造,而在互联网交易中,我们必…

【1】初识Linux

学习笔记目录 学习教程:B站 “黑马程序员” 初识Linux--入门Linux基础命令--会用Linux权限管控--懂权限Linux实用操作--熟练实战软件部署--深入掌握脚本&自动化--用的更强项目实战--学到经验云平台技术--紧跟潮流 操作系统概述 1.计算机由硬件和软件两个主要…

AcWing 12. 背包问题求具体方案

AcWing 12. 背包问题求具体方案AcWing 12. 背包问题求具体方案(1)问题(2)分析(3)代码AcWing 12. 背包问题求具体方案 (1)问题 (2)分析 我们先看一下这道题中…

tomcat更改默认端口

如下图把conf目录下的server.xml的下图所示处由原来的8080改为需要的即可;当前改为8087;保存之后重启tomcat; 网上一个资料说如果要运行2个tomcat,把下图的8009改为自己的,例如18009, 把下图的8005改为自己…

pythpon基础:创建文件索引升级版

需求环境 这是公司的一个需求,有一份很庞大的数据由好多视频文件组成,总共有12T左右,视频来源是一些下载的视频素材。每隔一段时间就要将一部分筛选好的视频文件剪切到server02服务器进行转码,筛选没被选中的文件将被删除。从下载…

5. 蒙特卡洛方法

蒙特卡洛方法5. 离轨策略5.1 策略评估(基于重要度采样)5.1.1 计算目标策略下的状态值5.1.2 蒙特卡洛算法(状态值估计)5.1.3 增量式的实现5.2 策略迭代5.3 减少重要性采样方差的方法5.3.1 折扣敏感的重要性采样5.3.2 每决策重要性抽…

go 语言 string 类型思考

string 作为 go 语言中的基础类型,其实有一些需要反复揣摩的,可能是我们使用的场景太简单,也可能是我们不需要那可怜的一点优化来提高性能,对它也就没那么上心了。 文章运行环境:go version go1.16.6 darwin/amd64 并…

浅析Java中的final关键字

一.final关键字的基本用法 在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。 1.修饰类 当用final修饰一个类时,表明这个类不能被继承。也就是说&a…

ACL访问控制的基本实例

典型案例: 配置需求∶ 在Router上部署基本ACL后,ACL将试图穿越Router的源地址为192.168.1.0/24网段的数据包过滤掉,并放行其他流量,从而禁止192.168.1.0/24网段的用户访问Router右侧的服务器网络。 配置: 1、Router已…

第三章 变量

一、数据类型(P40) 每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。二、整数类型 整型的使用细节: (1)Java 各整数类型有固定的范围和字段长度,不受具体OS【操作系…

Java多线程(四)——ThreadPoolExecutor源码解析

ThreadPoolExecutor源码解析 多线程场景下,手动创建线程有许多缺点: 频繁创建、销毁线程会消耗大量 CPU 资源,销毁线程后需要被回收,对 GC 垃圾回收也有一定的压力 使用线程池有许多好处: 降低 CPU 资源消耗。通过…

Linux运维之解决服务器挖矿木马问题

文章目录1 挖矿木马1.1 定义1.2 挖矿特征1.3 解决挖矿木马1.3.1 阻断异常网络通信(非必需)1.3.2 清除定时任务1.3.3 清除启动项1.3.4 清除SSH公钥1.3.5 清除木马进程1.4 其他常见问题1.4.1 清除木马后又100%1.4.2 CPU占用100%却看不到进程1 挖矿木马 1.…

Python OS 文件目录方法 os.walk()

Python OS 文件/目录方法 os.walk() 概述 os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。 os.walk() 方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。 在Unix,Windows中…

BFS(三)腐烂的橘子(感染问题)

994. 腐烂的橘子 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的…

领导看到我自用的IDEA插件,也回去悄悄安装了...

现在哪有程序员离得开 Idea 啊!没有 Idea 的程序员那还有灵魂吗?那没有!既然我们都用 Idea,如何提高 Idea 的开发效率,在开发工具上,我们就卷掉其他小伙伴呢!今天鸡翅老哥就来给大家介绍几款我一…

函数的认识

文章目录 函数是什么库函数 自定义函数 函数参数 函数调用 函数的嵌套调用和链式访问 函数的声明和定义 函数递归一、函数是什么 维基百科中对函数的定义:子程序在计算机科学中,子程序(英语:Subroutine, procedure, functio…

SpringBoot+Vue项目课程作业管理系统

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏…

NodeJS Web 框架 Express 之路由

NodeJS Web 框架 Express 之路由参考描述路由路由匹配规则顺序匹配模块化创建使用前缀参考 项目描述哔哩哔哩黑马程序员搜索引擎Bing 描述 项目描述Edge109.0.1518.61 (正式版本) (64 位)NodeJSv18.13.0nodemon2.0.20Express4.18.2 路由 在 Web 中,路由可以理解为…

体验 micronaut 微服务框架

体验 micronaut 微服务框架谁在使用 MICRONAUT主要特点代码示例展示几点特性原生云原生安装 Micronaut 命令行工具创建一个 MICRONAUT 应用程序MICRONAUT是基于 JVM 的现代全栈框架,用于构建模块化、易于测试的微服务和无服务器应用程序。 谁在使用 MICRONAUT 主要…

数学建模——评价算法

层次分析法(AHP) 步骤 1.建立层次结构模型; 2.构造判断(成对比较)矩阵; 3.层次单排序及其一致性检验; 4.层次总排序及其一致性检验; 建立层次结构模型 将决策的目标、考虑的因素(决策准则)和决策对象按…