【MySQL架构篇】存储引擎

news2024/9/22 19:40:46

文章目录

    • 1. 概述
    • 2 InnoDB引擎:具备外键支持功能的引擎
    • 3. MyISAM引擎:主要的非事务处理存储引擎
    • 4. Archive 引擎:用于数据存档
    • 5. Blackhole 引擎: 丢弃写操作,读操作会返回空内容
    • 6. CSV引擎:存储数据时,以逗号分隔各个数据项
    • 7. Memory引擎:置于内存的表
    • 8. Federated引擎: 访问远程表
    • 9. Merge引擎: 管理多个MyISAM表构成的表集合
    • 10. NDB引擎: MySQL集群专用存储引擎

1. 概述

为了管理方便,人们把 连接管理查询缓存语法解析查询优化 这些并不涉及真实数据存储的功能划分为MySQL server 的功能,把真实存取数据的功能划分为 存储引擎 的功能。所以在MvSQL server 完成了查询优化后,只需按照生成的 执行计划 调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。

MySQL中提到了存储引擎的概念。简而言之,存储引擎就是指表的类型。 其实存储引擎以前叫做 表处理器,后来改名为 存储引擎,它的功能就是接收上层传下来的指令,然后对表中的数据进行提取或写入操作。

MySQL 8.0.34默认支持的存储引擎:

show engines;

在这里插入图片描述

2 InnoDB引擎:具备外键支持功能的引擎

MySQL从3.23.34a开始就包含lnnoDB存储引擎。 大于等于5.5之后,默认采用InnoDB引擎

优点:

  • 支持外键(一般不使用,会影响性能)
  • 支持事务
  • 索引即数据

除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎,除非有特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎

缺点:

  • 对比MyISAM的存储引擎,InnoDB写的处理效率差一些(针对只新增和查询的表,新增时需要生成B+树) ,并且会占用更多的磁盘空间以保存数据和索引
  • MyISAM只缓存索引,不缓存真实数据; InnoDB不仅缓存索引还要缓存真实数据对内存要求较高(需要同时将索引与数据一起加入内存),而且内存大小对性能有决定性的影响

3. MyISAM引擎:主要的非事务处理存储引擎

MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等。5.5之前默认的存储引擎。

特点:

  • 不支持事务、行级锁、外键,有一个毫无疑问的缺陷就是 崩溃后无法安全恢复
  • 访问的速度快
  • 针对数据统计有额外的常数存储
  • 索引与数据分开存储:
    • .frm存储表结构
    • .MYD存储数据
    • .MYI存储索引

应用场景:只读应用或者以读为主的业务

4. Archive 引擎:用于数据存档

  • archive 是归档 的意思,仅仅支持 插入查询 两种功能 (行被插入后不能再修改)
  • 拥有很好的压缩机制,使用 zlb压缩库,在记录请求的时候实时的进行压缩,经常被用来作为仓库使用
  • ARCHIVE存储引擎采用了 行级锁。该ARCHIVE引擎支持 AUTO_INCREMENT 列属性。AUTO_INCREMENT列可以具有唯一索引或非唯一索引。尝试在任何其他列上创建索引会导致错误

适用场景:适合日志和数据采集(档案)类应用,适合存储大量的独立的作为历史记录的数据。拥有很高的插入速度,但是对查询的支持较差

5. Blackhole 引擎: 丢弃写操作,读操作会返回空内容

  • Blackhole引擎没有实现任何存储机制,它会 丢弃所有插入的数据,不做任何保存
  • 但服务器会记录Blackhole表的日志,所以可以用于复制数据到备库,或者简单地记录到日志。但这种应用方式会碰到很多问题,因此并不推荐

6. CSV引擎:存储数据时,以逗号分隔各个数据项

  • CSV引擎可以将 普通的CSV文件作为MySQL的表来处理,但不支持索引
  • CSV引擎可以作为一种 数据交换的机制,非常有用
  • 对于数据的快速导入、导出是有明显优势的

7. Memory引擎:置于内存的表

Memory采用的逻辑介质是 内存响应速度很快,但是当mysqld守护进程崩溃的时候 数据会丢失 。另外,要求存储的数据是数据长度不变的格式,比如,Blob和Text类型的数据不可用(长度不固定的)

  • Memory同时 支持哈希 (HASH) 索引和 B+树索引,默认使用哈希索引,也可指定为B+树索引类型
  • MEMORY 表的大小是受到限制 的。表的大小主要取决于两个参数,分别是 max_rowsmax_heap_table_size。其中,max_rows可以在创建表时指定; max_heap_table_size的大小默认为16MB可以按需要进行扩大

一般不使用,而是使用redis

8. Federated引擎: 访问远程表

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

9. Merge引擎: 管理多个MyISAM表构成的表集合

10. NDB引擎: MySQL集群专用存储引擎

也叫做 NDB Cluster 存储引擎,主要用于 MySQL cluster 分布式集群 环境,类似于 0racle 的 RAC 集群

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

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

相关文章

Linux新建用户、删除用户以及用户之间的切换

Linux新建用户、删除用户以及用户之间的切换 文章目录 Linux新建用户、删除用户以及用户之间的切换1. 新建用户adduser2. 删除用户userdel3. 切换用户su3.1 root用户 -> 普通用户3.2 普通账户 -> 普通账户3.3 普通账户 -> root账户 学习之前,我们需要了解一…

【中国数据】中国基础矢量数据(shp格式)

数据目录 数据举例 数据获取 专栏分享常用的地理空间数据,包括矢量数据、栅格数据、统计数据等,订阅专栏后,从私信查收专栏完整数据包,持续同步更新。

侯捷——2.C++标准库 体系结构与内核分析

侯捷——2.C标准库 体系结构与内核分析 1. C标准库 vs STL C标准库包含STL。标准库都用 std 这个命名空间包装起来。 2. STL体系结构基础介绍 allocators(分配器)是给containers(容器)分配内存的。当要创建容器时,必…

C# Onnx Yolov8 Detect 印章 指纹捺印 检测

应用场景 检测文件中的印章和指纹捺印,用于判断文件是否合规(是否盖章,是否按印) 效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.…

debian 10 安装apache2 zabbix

nginx 可以略过,改为apache2 apt updateapt-get install nginx -ynginx -v nginx version: nginx/1.14.2mysql 安装参考linux debian10 安装mysql5.7_debian apt install mysql5.7-CSDN博客 Install and configure Zabbix for your platform a. Install Zabbix re…

Failed to run the WC DB work queue associated with 错误的解决

步骤: 1、”文件夹选项"中,显示所有隐藏的文件夹及文件,操作后,能看到隐藏的.svn文件夹下的wc.db文件了 2、到官网下载 sqlite 如果是Windows系统,下载Precompiled Binaries for Windows 下红框中版本 3、用sq…

把HexMergeCmd集成到右键菜单里

1. 复制HexMergeCmd到C盘Program Files 2. 双击“add.reg”,添加注册表项 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Directory\Background\shell\HexMergeCmd] "HexMergeCmd" "Icon""C:\\Program Files\\HexMergeCmd\\He…

Leetcode刷题详解——山脉数组的峰顶索引

1. 题目链接&#xff1a;852. 山脉数组的峰顶索引 2. 题目描述&#xff1a; 符合下列属性的数组 arr 称为 山脉数组 &#xff1a; arr.length > 3存在i(0 < i < arr.length - 1&#xff09; 使得&#xff1a; arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[…

TensorFlow图像多标签分类实例

接下来&#xff0c;我们将从零开始讲解一个基于TensorFlow的图像多标签分类实例&#xff0c;这里以图片验证码为例进行讲解。 在我们访问某个网站的时候&#xff0c;经常会遇到图片验证码。图片验证码的主要目的是区分爬虫程序和人类&#xff0c;并将爬虫程序阻挡在外。 下面…

计算机网络——计算机网络体系结构(4/4)-计算机网络体系结构中的专用术语(实体、协议、服务,三次握手‘三报文握手’、数据包术语)

目录 分类一——实体 实体 对等实体 分类二——协议 协议 协议的三要素 分类三——服务 服务 服务访问点 数据包术语 计算机网络体系结构中的专用术语 本篇所讲的专用术语来源于OSI的七层协议体系结构&#xff0c;但也适用于TCP/IP的四层体系结构和五层协议原理体系…

Qt中的单例模式

QT单例类管理信号和槽函数 Chapter1 Qt中的单例模式一、什么是单例模式&#xff1f;二、Qt中单例模式的实现2.1、静态成员变量2.2、静态局部变量2.3、Q_GLOBAL_STATIC 宏实例2 三、使用场景四、注意事项 Chapter2 QT单例类管理信号和槽函数一、创建单例类二、主界面添加组件三、…

原始航片匀色调色方法

使用PhotoRC 2.0软件&#xff0c;对原始航片进行批量匀色&#xff0c;可以自动处理和人机交互&#xff0c;保留exif信息。 软件下载链接&#xff1a; https://pan.baidu.com/s/1Jj4cMpq8xzYvSa1hhozH-g?pwdndfm 提取码&#xff1a;ndfm

Spring Boot中使用JSR-303实现请求参数校验

JSR-303是Java中的一个规范&#xff0c;用于实现请求参数校验。它定义了一组注解&#xff0c;可以应用于JavaBean的字段上&#xff0c;用于验证输入参数的合法性。下面是一些常用的JSR-303注解及其介绍&#xff1a; NotNull&#xff1a;用于验证字段值不能为null。 NotEmpty&a…

RT-Thread 5. ENV添加自定义模块

代码 /* file: hello.c */ #include <stdio.h> #include <finsh.h> #include <rtthread.h> int hello_world(void) {rt_kprintf("Hello, world!\n");return 0; } MSH_CMD_EXPORT(hello_world, Hello world!)/* file: hello.h */ #ifndef _HELLO_H…

03 vi编辑器

vi编辑器的三种模式: 不同的模式下机键动作解释的意义是不一样的 编辑模式 插入模式 末行模式 文件的打开和关闭保存 移动光标

专业135总分400+西安交通大学信息与通信工程学院909/815考研经验分享

今年初试发挥不错&#xff0c;400&#xff0c;专业课135&#xff0c;将近一年复习一路走来&#xff0c;感慨很多&#xff0c;希望以下经历可以给后来的同学提供一些参考。 初试备考经验 公共课&#xff1a;三门公共课&#xff0c;政治&#xff0c;英语&#xff0c;数学。在备考…

AST反混淆实战|找出某里滑块226混淆代码隐藏的字符串

关注它&#xff0c;不迷路。 本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01; 1. 常见的字符串 在还原控制流之后&#xff0c;接下来的动作就是还原字…

高效翻译工具GPT插件的使用教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

【语义分割】语义分割概念及算法介绍

文章目录 一、基本概念二、研究现状2.1 传统算法2.2 深度学习方法 三、数据集及评价指标3.1 常用数据集3.2 常用指标 四、经典模型参考资料 一、基本概念 语义分割是计算机视觉中很重要的一个方向。不同于目标检测和识别&#xff0c;语义分割实现了图像像素级的分类。它能够将…

【【萌新的FPGA学习之Vivado下的仿真入门-2】】

萌新的FPGA学习之Vivado下的仿真入门-2 我们上一章大概了解了 我们所需要进行各项操作的基本框架 对于内部实现其实一知半解 我们先从基本的出发 但从FPGA 了解一下 vivado下的仿真入门 正好帮我把自己的riscV 波形拉一下 行为级仿真 step1: 进入仿真界面&#xff1a;SIMULAT…