MySQL存储结构

news2024/9/22 11:36:14

数据结构

数据结构可视化:https://www.cs.usfca.edu/~galles/visualization/

在这里插入图片描述
二叉树缺点: 单边节点过多时无法提高效率

在这里插入图片描述
红黑树: 具有平衡功能的二叉树,解决了单边节点过多导致的效率无法提高的问题,缺点是平衡算法带来的开销以及层数过高带来的遍历开销

B树

在这里插入图片描述
B-树:
叶节点具有相同深度,叶子节点指针为空
所有索引元素不重复
节点数据索引从左到右递增

在这里插入图片描述
B+树:
多路平衡树

非叶子结点不存储data,只存储冗余索引,所以可以存放更多索引
叶子节点包含所有索引字段
叶子节点索引有序,用双向指针连接,提高区间访问性能

Hash表

在这里插入图片描述

对索引的key进行一次hash计算就可以定位出数据存放位置(计算hash->遍历链表)
很多时候Hash索引比B+树索引更高效
仅能满足“=”,“IN”,不支持范围查询
hash冲突问题

存储引擎

存储引擎是介于表而言的,数据库底层数据是以文件的形式存放在磁盘上的,数据存储在数据库安装目录的data子目录里,在data目录中,每个数据库都用一个同名子目录来表示

linux中,目录为/var/lib/mysql/
在这里插入图片描述

MyISAM(非聚集)

MyISAM索引文件和数据文件是分离的(非聚集)
在这里插入图片描述

  • frm文件存放的是表结构信息
    在这里插入图片描述

  • MYI文件存放的是B+树的数据结构

    • 叶子节点存的是索引数据对应的磁盘地址
  • MYD文件存放的是表中的真实数据
    查询时,通过MYI索引查找到对应数据的磁盘地址,再通过地址,到MYD中查询数据
    在这里插入图片描述

InnoDB(聚集)

  • 表数据本身就是按B+Tree组织的一个索引结构文件(ibd文件)
    在这里插入图片描述

  • 聚集索引叶节点包含了完整的数据记录,一张表有且只有唯一一个聚集索引

  • InnodeDB底层用B+树来组织,如果用户没有设定主键,那么会搜索每一列,找到每条记录都唯一的一个字段来作为主键建立数据,如果找不到这样的列,则会维护一个隐藏列保证每个字段唯一,用它来作为主键构建B+树,组织数据

  • 推荐使用整型的自增数据来建立主键,其一因为整型数据比较大小较快,易于建立和遍历B+树,字符串和UUID的计算(逐位比较)较慢,其二因为如果索引不自增,可能导致拆入数据后B+树叶子节点分裂,以及可能存在的树平衡操作,消耗资源
    在这里插入图片描述

  • 非聚集索引(二级索引)存放的是索引数据的主键,为了一致性和节省存储空间,查找时通过回表进行查找

Memory

在内存中存储所有数据,因此Memory类型的表访问数据非常快,但是一旦服务关闭,表中的数据就会丢失

默认使用HASH索引

应用于对非关键数据快速查找的场景

BLACKHOLE

黑洞存储引擎,类似于 Unix 的 /dev/null,Archive 只接收但却并不保存数据。对这种引擎的表的查询常常返 一个空集

这种表可以应用于 DML 语句需要发送到从服务器,但主服务器并不会保留这种数据的备份的主从配置中

工作流程

在这里插入图片描述
MySQL架构总共四层,上图中以虚线划分:

第一层,对客户的进行身份认证,连接处理,确保安全,并不是MySQL独有的,大多数给予网络的客户端/服务器的工具或者服务都有类似的架构。比如:连接处理、授权认证、安全等。

第二层,分析命令,查询缓存,优化命令,所有的内置函数,同时所有跨存储引擎的功能:存储过程,触发器,视图,是MySQL核心服务。

第三层:存储引擎负责MySQL中数据的组织和提取

第四层:文件系统负责存储数据,将数据存储到硬盘

事物特性

Innodedb存储引擎支持事务,事务的特性指的是ACID,原子性,一致性,隔离性,持久性。

参考文献 https://www.cnblogs.com/Bennyzion/p/14451807.html

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

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

相关文章

移动端 自适应布局方案

文章目录DPRrem布局实现机理优点缺点相关技术方案viewport 布局优点缺点相关技术方案媒体查询等比缩放原理DPR DPR 设备物理像素 / CSS像素 DPR 2 为例,把 4(2x2)个物理像素当一个 CSS 像素使用 rem布局 rem 就是相对于根元素 html 的…

【正点原子FPGA连载】第二十章Linux图形化配置及其原理 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十章Linux图…

Python获取信用企业的数据

文章目录前言一、需求二、分析三、测试运行前言 本系列文章来源于真实的需求本系列文章仅供学习参考本系列文章你来提我来做 one:Leave a message at the end of the article two:Get wechat contact information 一、需求 需求 URL:https://szxt.zjamr.zj.gov.cn…

如何保持线上安全:你们的个人网络安全指南

在互联网上保持安全的最佳做法。 我们之前写过关于保护你们的加密资产的文章——你们可以在此处查看我们的加密操作安全指南。现在是时候准备一组更通用的提示来帮助你们保持线上安全。我们知道你们可能大部分的购物都是在网上进行的,我们真的不希望你们被黑客攻击。…

HTB_Funnel_ssh隧道转发

文章目录信息收集hydra ssh 暴破ssh 隧道转发 postgresql 流量postgresql 使用动态端口转发信息收集 nmap -sC -sV 10.129.143.249 账号密码 Anonymous:ftp 发现两个文件,下载 默认密码 funnel123#!# 一封邮件 邮箱名可能是用户名 hydra ssh 暴破 hydra -L userna…

Redis_主从复制

一、介绍主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。二、作用读写分离,性能拓展容灾快速恢复(一主多从)三、搭建配置1、创建/myredis文件夹2、复制Re…

一篇五分生信临床模型预测文章代码复现——FIgure 9.列线图构建,ROC分析,DCA分析 (二)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

【GPLT 二阶题目集】L2-041 插松枝

人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上,做成大大小小的松枝。他们的工作流程(并不)是这样的: --->每人手边有一只小盒子,初始状态为空。 --->每人面前有用不完的松枝干和一个推送器&#xf…

[NSSRound#7 Team]Web学习

系列文章目录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录一、ecRCE二、Shadowflag三、[NSSRound#7 Team]新的博客四、[NSSRound#7 Team]0o0提示:以下是本篇文章正文内容,下…

【异常】发送失败,此请求可能存在风险,已被微信拦截

一、背景说明 今天上线了新年红包的功能,但是部分用户提示了如下的异常,没有明显的异常提示,就是在查询ELK时,看了如下的错误提示,错误截图如图 提示“发送失败,此请求可能存在风险,已被微信拦…

【Redis】hmdp点赞、排行榜、分页功能的实现

【Redis】hmdp点赞、排行榜、分页功能的实现 文章目录【Redis】hmdp点赞、排行榜、分页功能的实现1.点赞功能实现1.1 需求1.2 实现步骤1.3 思路分析1.4 代码实现1.5 逻辑解析2. 排行榜功能实现2.1 需求2.2 实现步骤2.3 思路分析2.4 代码实现2.5 逻辑解析3. 分页功能实现3.1 需求…

算法之美~贪心算法

如何理解贪心算法?假设有一个可以容纳100kg物品的背包,可以装各种物品。有以下5种豆子,每种豆子的总量和总价值都各不相同。为了让背包中所装物品的总价值最大,如何选择在背包中装哪些豆子?每种豆子又该装多少呢&#…

Pikachu靶场攻略(代码分析)

2023年将会持续于B站、CSDN等各大平台更新,可加入粉丝群与博主交流:838681355,为了老板大G共同努力。 一、安装 Phpstudy_pro设置数据库用户名密码 root 123456 更改\pikachu\inc\config.inc.php 访问pikachu页面点击配置即可。 二、 攻略(包含审计…

BiQuadDesigner相关算法研究

一、获取相关源码方法如下 1、打开BiQuadDesigner相关网页如下 2、菜单:更多工具->开发者工具 3、在此重点研究BiQuadDesigner,选择BiQuadDesigner下的javascript,分别查看BiQuad.js和BiQuadFilter.js 二、研究频响曲线生成步骤如下 1、参数输入及换算滤波器系数如下参…

【数据结构基础】线性表 - 栈和队列

知识点栈 - LIFO示意图实现使用数组实现的叫静态栈使用链表实现的叫动态栈队列 - FIFO示意图实现使用数组实现的叫静态队列使用链表实现的叫动态队列栈和队列相关题目用栈实现队列232. Implement Queue using Stacks (Easy)栈的顺序为后进先出,而队列的顺序为先进先…

【前端设计】复位保护模块的整体设计思路

前言 复位保护模块,是在单系统进行动态复位的过程中,对接口进行硬性逻辑保护,避免异步复位过程中的毛刺对周围系统产生影响的模块。一般而言,简单的单系统动态复位流程可以归纳为: 停止业务功能,收齐接口上的rsp,进入待复位状态;使能复位保护,通过逻辑避免毛刺和误触…

【SCL】博图SCL语言回顾和第一个面向对象程序

西门子SCL语言回顾复习和编写第1个面向对象程序 (形参:形参指的是指令上标记该指令要使用的数据位置的标识符;简单来说就是只有数据类型,没有实际的地址,在调用时可以写入)。 (实参:实参指的是包…

并发编程学习(九):同步模式之顺序控制、交替打印

1、固定运行顺序例如:两个线程,运行是必须先2后1打印。1.1、Object之wait、notify版在同步代码块中,wait开始后,CPU将释放给另一个线程使用,直到①若wait(xxxx),则x秒后当前线程被唤醒,继续占用…

STM32项目设计:基于stm32f103c8t6智能电梯系统

文章目录一、项目功能概述二、项目材料选择三、原理图设计四、PCB板设计五、主程序设计六、成品展示资料链接:待更新~ 哔哩哔哩视频链接:https://www.bilibili.com/video/BV17D4y1V7HG/?vd_sourcee5082ef80535e952b2a4301746491be0(bilibili…

STM32G431——串口通信

蓝桥杯嵌入式——串口通信 目录 USART 电平标准-TTL 电平标准与 RS232 电平标准 232通信标准 USB转232 异步通信 串口配置 程序设计 重定向 串口发送函数 发送字符串 串口接收——中断 1.USART 通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异…