【MySQL】MySQL数据存储机制之存储引擎

目录

1.如何理解存储引擎? 

2.MySQL 提供的存储引擎

3.存储引擎的功能特性

(1)存储介质

(2)事务处理能力

(3)锁定

(4)备份和恢复

(5)优化

(6)外键的引用完整性

(7)全文本搜索

(8)空间数据


1.如何理解存储引擎? 

存储引擎是MySQL 中负责数据存储和检索的服务器组件,它充当了不同表类型的处理程序。

存储引擎的主要任务包括:

  • 数据存储:将数据存储在磁盘或内存中;支持不同的存储格式(如 InnoDB 的表空间、MyISAM 的文件分离)。
  • 数据检索:提供高效的索引机制(如 B+ 树、哈希索引);支持快速的行操作(如插入、更新、删除)。
  • 事务和并发控制:支持事务(如 InnoDB)或提供简单的锁机制(如 MyISAM)。
  • 优化:提供行级优化(如 InnoDB 的 MVCC)和索引优化。

表的存储引擎通常不会影响SQL层的操作,通常,SQL层解析所有有效的SQL语句,存储层处理SQL层下发的行操作(如读取、写入、更新)。这种分层设计使得 MySQL 可以支持多种存储引擎,同时保持 SQL 层的统一性。

SQL 语句是独立于存储引擎的,除了以下语句:

  • CREATE TABLE 有一个ENGINE 选项,指定每个表使用哪个存储引擎。
  • ALTER TABLE 有一个ENGINE 选项,可以将表转换为使用不同的存储引擎。

某些功能仅在某些存储引擎中可用:

  • 仅InnoDB 和NDB 支持:外键 和 事务控制操作,如COMMIT 和ROLLBACK
  • 只有InnoDB 和MyISAM 支持全文索引

2.MySQL 提供的存储引擎

  • InnoDB(默认的内置存储引擎)
  • MyISAM (常用在旧的系统中)
  • MEMORY
  • ARCHIVE
  • BLACKHOLE
  • MERGE
  • CSV
  • FEDERATED (默认被禁用)
  • NDBCLUSTER (在MySQL Cluster 发行版中可用)

3.存储引擎的功能特性

(1)存储介质

存储引擎支持不同的存储介质,以适应不同的应用场景:

磁盘:大数据量、数据持久化存储。

内存:Memory 存储引擎将数据存储在内存中,读写速度极快。适合临时数据或缓存数据,但数据库重启后数据会丢失。

网络数据节点:分布式存储引擎(如 NDB)将数据存储在多个网络节点上。适合分布式系统和高可用性场景。

空 (BLACKHOLE):不存储任何数据,所有写入操作都会被丢弃。适合数据复制或测试场景。

(2)事务处理能力

多语句事务:支持事务的存储引擎(如 InnoDB)允许将多个 SQL 语句作为一个事务执行。事务可以提交(Commit)或回滚(Rollback)。

隔离级别:支持不同的事务隔离级别(如读未提交、读已提交、可重复读、串行化)。隔离级别决定了事务之间的可见性和并发性能。

(3)锁定

锁定机制用于管理并发访问。

锁定粒度

表级锁:锁定整个表(如 MyISAM)。

行级锁:锁定单行数据(如 InnoDB)。

更细粒度的锁可以提高并发性能。

多版本并发控制(MVCC)

MVCC 通过保存数据的多个版本来实现非阻塞读操作。适合高并发读写的场景(如 InnoDB)。

(4)备份和恢复

存储引擎的备份和恢复机制因复杂性不同而有所差异。

复杂存储引擎(如 InnoDB、NDB):在内部保持数据一致性,支持热备份和崩溃恢复。备份文件可能不包含数据库的一致快照,需要通过日志(如 Redo Log、Undo Log)恢复。

Q:什么是热备份?

A:在数据库运行期间进行备份,不需要停止服务。

Q:如何理解备份文件可能不包含数据库的一致快照?

A:复杂存储引擎的备份文件可能不是数据库在某一时刻的完整、一致的状态。这是因为备份过程中数据库可能仍在运行,数据可能正在被修改。

简单存储引擎(如 MyISAM):文件系统备份可以直接复制数据文件(如 .MYD 和 .MYI)。由于缺乏事务支持,备份文件与数据库状态一致。

(5)优化

存储引擎通过使用索引(使用 B+ 树、哈希等索引结构加速查询)、缓冲区(通过批量写入和延迟写入磁盘,优化写操作,提高磁盘性能。)和内存(将热点数据加载到内存中,减少磁盘 I/O)来优化性能。

(6)外键的引用完整性

  • 支持外键的存储引擎(如 InnoDB)可以保证数据的引用完整性。
  • 外键约束确保关联表之间的数据一致性。

(7)全文本搜索

持全文本搜索的存储引擎(如 InnoDB、MyISAM)可以高效地处理文本数据的搜索。全文本索引支持关键词搜索、模糊匹配等功能。

(8)空间数据

支持空间数据的存储引擎(如 InnoDB、MyISAM)可以存储和查询地理空间数据(如点、线、面)。空间索引(如 R 树)用于加速空间查询。

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

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

相关文章

LeetCode hot 100—验证二叉搜索树

题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 示例 1&#…

ccfcsp3402矩阵重塑(其二)

//矩阵重塑&#xff08;其二&#xff09; #include<iostream> using namespace std; int main(){int n,m,t;cin>>n>>m>>t;int c[10000][10000];int s0,sum0;int d[10000],k[100000];for(int i0;i<n;i){for(int j0;j<m;j){cin>>c[i][j];d[s…

MCP和Function Calling的区别

文章目录 1、什么是MCP1.1、定义和特点1.2、架构和工作原理3.3、MCP 的主要优势 2、什么是Function Calling3、MCP和Function Calling的区别4、总结 &#x1f343;作者介绍&#xff1a;双非本科大四网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;前三年专注于Java领域…

裂缝识别系统 Matlab GUI设计

使用说明 裂缝识别系统 Matlab GUI设计 &#xff0c;运行环境Matlab2023b及以上&#xff1b; 一种基于MATLAB图形用户界面&#xff08;GUI&#xff09;的裂缝自动识别系统&#xff0c;该系统利用数字图像处理技术实现裂缝图像的预处理&#xff0c;集成均衡化、噪声滤波、对比…

【源码分析】Nacos实例注册流程分析-事件驱动框架

【踩坑记录】 本人下载的Nacos 服务端版本是2.3.2&#xff0c;在开始进行源码编译便遇到问题&#xff0c;下面是各个问题记录 源码大量爆红 在最开始用Idea加载Maven项目的时候&#xff0c;发现项目中大量的代码爆红&#xff0c;提示其类或者包不存在&#xff0c;后来结果查…

51单片机指令系统入门

目录 基本概念讲解 一、机器指令​ 二、汇编指令​ &#xff08;一&#xff09;汇编指令的一般格式 &#xff08;二&#xff09;按字节数分类的指令 三、高级指令 总结​ 基本概念讲解 指令是计算机&#xff08;或单片机&#xff09;中 CPU 能够识别并执行的基本操作命令…

mysql5.x和mysql8.x查看和设置隔离级别

MySQL的隔离级别 级别标志值描述读未提交READ-UNCOMMITTED0存在脏读、不可重复读、幻读的问题读已提交READ-COMMITTED1解决脏读的问题&#xff0c;存在不可重复读、幻读的问题可重复读REPEATABLE-READ2mysql 默认级别&#xff0c;解决脏读、不可重复读的问题&#xff0c;存在幻…

【函数式编程】【C#/F#】第四讲:单子与函子 - 抽象的编程模式

在第二讲中我们探讨了一个诚实的函数应该要做到什么事&#xff0c;并运用了一种方法&#xff0c;让我们可以去准确的描述数据。 不过有一种情况让我们始料未及&#xff0c;例如网站需要收集一些信息&#xff0c;但有些信息不是必须的&#xff0c;是可有可无的。如果我们要去准…

【vue2 + Cesium】使用Cesium、添加第三方地图、去掉商标、Cesium基础配置、地图放大缩小事件、获取可视区域、层级、高度

参考文章&#xff1a; vue2 使用 cesium 篇【第一篇】 vue2 使用 cesium 【第二篇-相机视角移动添加模型】 vue2 项目模版&#xff1a; vue2-common 安装 cesium npm install cesium --save这个就很简单&#xff0c;只需要一句简简单单的命令就可以实现在 vue 项目中安装 ce…

vllm-openai多服务器集群部署AI模型

服务器配置是两台ubantu系统电脑,每台电脑安装两张4090-48G显存的显卡,共计192G显存。 服务器1 服务器2 准备工作: 1.两台电脑都已经安装了docker 2.两台电脑都已经安装了nvidia驱动 参考vllm官方资料 https://docs.vllm.ai/en/latest/serving/distributed_serving.html…

【电源】斩波电路

文章目录 前言定义概念 缩写降压斩波电路使用步骤总结参考文献 前言 进行大创项目开发的学习 bilibili 定义概念 缩写 斩波电路&#xff1a;分为降压&#xff0c;电荷泵&#xff0c;升压&#xff0c;升降压&#xff0c;Cuk&#xff0c;Speic&#xff0c;Zeta 等等 降压斩…

Hadoop集群组成

&#xff08;一&#xff09;Hadoop的组成 对普通用户来说&#xff0c; Hadoop就是一个东西&#xff0c;一个整体&#xff0c;它能给我们提供无限的磁盘用来保存文件&#xff0c;可以使用提供强大的计算能力。 在Hadoop3.X中&#xff0c;hadoop一共有三个组成部…

c++基础知识-图论进阶

一、拓扑排序 1、基础知识 1&#xff09;什么是拓扑排序 对一个有向无环图G进行拓扑排序&#xff0c;是将G中所有顶点排成一个线性序列&#xff0c;使得图中任意一对顶点u和v&#xff0c;若&#xff0c;则u在线性序列中出现在v之前。 2&#xff09;拓扑排序的操作方法 重复执行…

从Scaling Laws中解析大模型训练的边际递减临界点

前言 当我们拆解GPT-4到DeepSeek的演进路径&#xff0c;会发现一个反直觉的真相&#xff1a;​AI的智能跃迁不依赖参数堆砌&#xff0c;而取决于对"结构-能量-信息"三元关系的精准把控。就像人类大脑在进化中通过皮层折叠而非单纯增大体积来实现智能突破&#xff0c…

Word 小黑第20套

对应大猫21 特定一页设为横向 上下用分页符

【从0到1搞懂大模型】RNN基础(4)

先说几个常用的可以下载数据集的地方 平台&#xff1a;kaggle&#xff08;https://www.kaggle.com/datasets&#xff09; 和鲸社区&#xff08;https://www.heywhale.com/home&#xff09; 阿里天池&#xff08;https://tianchi.aliyun.com/&#xff09; 其他&#xff1a;海量公…

openEuler24.03 LTS下安装MySQL8

前提条件 拥有openEuler24.03 LTS环境&#xff0c;可参考&#xff1a;Vmware下安装openEuler24.03 LTS 步骤 卸载原有mysql及mariadb sudo systemctl stop mysql mysqld 2>/dev/null sudo rpm -qa | grep -i mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps 2>/dev/…

如何在Odoo 18中实现OWL通知服务

如何在Odoo 18中实现OWL通知服务 OWL&#xff08;Odoo Web Library&#xff09;是Odoo的前端框架&#xff0c;用于构建现代化的动态响应式用户界面。在早期版本中&#xff0c;Odoo 前端设计与开发使用的是诸如 QWeb 这类较为老旧的框架&#xff0c;而随着 Odoo 每发布一个新版本…

Unet nn-Unet

Unet && nn-Unet&#xff1a; 文章题目&#xff1a;U-Net: Convolutional Networks for Biomedical Image Segmentation 代码&#xff1a;https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/ 文章题目&#xff1a;nnU-Net: Self-adapting Framework for U…

【扩散模型入门】Latent Diffusion

1. 概述 扩散模型为公众所知的一个主要原因是Stable Diffusion(SD)的推出展现出了远超以往的图像合成效果,而SD的主要技术就是Latent Diffusion Model(LDM)。 实际上,LDM的核心idea非常简单: 为了确保生成质量,LDM尽可能提升去噪模型的规模。提升模型规模往往也会同步…