当前位置: 首页 > news >正文

MySQL--InnoDB体系结构

目录

一、物理存储结构

二、表空间

1.数据表空间介绍

2.数据表空间迁移

3.共享表空间

4.临时表空间

5.undo表空间

三、InnoDB内存结构

1.innodb_buffer_pool

2.innodb_log_buffer

四、InnoDB 8.0结构图例

五、InnoDB重要参数

1.redo log刷新磁盘策略

2.刷盘方式,控制buffer pool和redo buffer数据和日志刷写到磁盘的方式



一、物理存储结构



 

table.frm存储数据字典信息(列定义)
table.ibd表空间数据文件,存数据行和索引,有段-区-页的概念
ibdata1

5.7版本-->系统表空间文件,存储

                data dictionary:存所有表的数据字典,结构,属性,状态,参数...

                double write:自动故障恢复应用到的数据

                change buffer:存储辅助索引的变更

                undo:存储日志的回滚信息日志

                ibtmp:临时表,存储SQL存储过程中的中间数据(groupby、having、join、union)

                用户数据

5.6版本-->除了以上内容,还会放临时表

8.0版本-->ibdata中只放change buffer,其他的都被拆解成其他文件了

ib_logfileNredo log 用于重做日志,存储事务的前滚日志、内存数据页的变化
ibtmp1

临时表,存储SQL存储过程中的中间数据(groupby、having、join、union)

ib_buffer_pool内存预热文件,用于在内存中存放热数据

二、表空间

1.数据表空间介绍

        在数据库引擎层,加入的逻辑存储结构,来实现灵活的存储空间扩容

        在5.6版本后默认采取独立表空间的模式,每张表都是独立的表空间t1.ibd

        共享表空间ibdata1保留下来,只保存系统相关的数据

        查询当前表空间:select @@innodb_file_per_table;

2.数据表空间迁移

        1)停止相关业务        lock tables city read;

        2)在目标库创建同样的表

        3)将目标库新表的ibd删除        alter table city discard tablespace;

        4)迁移ibd至目标库新表        cp /data/3306/data/world/city.ibd /data/3357/data/world

        5)修改权限        chown -R mysql.mysql city.ibd

        6)导入表空间        alter table city import tablespace;

        7)解锁业务        unlock tables;

3.共享表空间

        1)查询参数:select@@innodb_data_file_path

        2)设置共享表空间:

              第一步:修改配置文件vim /etc/my.cnf

                初始化之前设置:                      innodb_data_file_path=ibdata1:1024M;ibdata2:1024M;ibdata3:1024M:autoextend;

                初始化之后设置:

               innodb_data_file_path=ibdata1:(当前文件)M;ibdata2:1024M;ibdata3:1024M:autoextend;

              第二步:重启数据库

4.临时表空间

             设置:  innodb_temp_data_file_path=ibtmp1:12M;ibtmp2:120M:autoextend:max:500M

5.undo表空间

如何查看:

         select @@innodb_undo_tablespaces; 一般在初始化的时候设置为3-5个

         select @@innodb_max_undo_log_size;   undo日志的大小,默认1G, 重启后可设置

         select @@innodb_undo_log_truncate=on   开启undo自动回收的机制

         select @@innodb_purge_rseg_truncate_frequency  触发自动回收的条件,单位是检测次数

如何设置:

        innodb_undo_tablespaces=3

        innodb_max_undo_log_size=128M

        innodb_undo_log_truncate=on 

        innodb_purge_rseg_truncate_frequency  = 32(次)

三、InnoDB内存结构

1.innodb_buffer_pool

        select @@innodb_buffer_pool_size

        innodb最大的内存区域,建议设置在物理内存的70%以下

        作用:缓冲数据页,索引页,数据字典,AHI自适应hash索引,change buffer,DW

2.innodb_log_buffer

        select @@innodb_log_buffer_size

        用来存储内存数据页的变化,数据修改完成之后,会将日志写入到磁盘日志文件中(ib_logfileN)

四、InnoDB 8.0结构图例

五、InnoDB重要参数

1.redo log刷新磁盘策略

        innodb_flush_log_at_trx_commit=0/1/2

0

每秒刷新redo buffer到os cache,然后fsync到磁盘,

资源消耗大

1

每次commit时刷新redo buffer到os cache,立即fsync到磁盘

默认值,在事务提交时立即刷新redo buffer到日志文件中,能够真正保证持久性

2

每次commit时刷新redo buffer到os cache,每秒钟fsync到磁盘

如果是边缘业务或者离线业务可以使用,有一定风险

2.刷盘方式,控制buffer pool和redo buffer数据和日志刷写到磁盘的方式

        innodb_flush_method

fsync默认值,刷新数据页和redo buffer到磁盘,都是先刷到os cache,然后再fsync到磁盘
O_DIRECT

刷写数据页时,跳过os cache,直接刷写到磁盘

刷写日志时,先刷到os cache,然后再fsync到磁盘

建议使用高IO能力的存储配合O_DIRECT,因为会对性能有影响

        

      

相关文章:

MySQL--InnoDB体系结构

目录 一、物理存储结构 二、表空间 1.数据表空间介绍 2.数据表空间迁移 3.共享表空间 4.临时表空间 5.undo表空间 三、InnoDB内存结构 1.innodb_buffer_pool 2.innodb_log_buffer 四、InnoDB 8.0结构图例 五、InnoDB重要参数 1.redo log刷新磁盘策略 2.刷盘方式&…...

ffplay 使用文档介绍

ffplay ffplay 是一个简单的媒体播放器,它是 FFmpeg 项目的一部分。FFmpeg 是一个广泛使用的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有类型的媒体文件。 ffplay 主要用于测试和调试,因为它提供了一个命令行界面,可以方便地查看媒体文件的…...

四种网络IO模型

📝个人主页:五敷有你 🔥系列专栏:面经 ⛺️稳中求进,晒太阳 IO的定义 IO是计算机内存与外部设备之间拷贝数据的过程。CPU访问内存的速度远高于外部设备。因此CPU是先把外部设备的数据读取到内存,在…...

Mixed-precision计算原理(FP32+FP16)

原文: https://lightning.ai/pages/community/tutorial/accelerating-large-language-models-with-mixed-precision-techniques/ This approach allows for efficient training while maintaining the accuracy and stability of the neural network. In more det…...

Go 控制协程(goroutine)的并发数量

在使用协程并发处理某些任务时, 其并发数量往往因为各种因素的限制不能无限的增大. 例如网络请求、数据库查询等等。 从运行效率角度考虑,在相关服务可以负载的前提下(限制最大并发数),尽可能高的并发。 在Go语言中,…...

web安全渗透测试十大常规项(一):web渗透测试之CSRF跨站请求伪造

渗透测试之CSRF跨站请求伪造 CSRF跨站请求伪造 CSRF跨站请求伪造...

YOLOv10尝鲜测试五分钟极简配置

最近清华大学团队又推出YOLOv10,真是好家伙了。 安装: pip install supervision githttps://github.com/THU-MIG/yolov10.git下载权重:https://github.com/THU-MIG/yolov10/releases/download/v1.0/yolov10n.pt 预测: from ult…...

社交媒体数据恢复:聊天宝

请注意,本教程仅针对聊天宝应用程序,而非其他聊天软件。以下是详细的步骤: 首先,请确保您已经登录了聊天宝应用程序。如果您尚未登录,请使用您的账号登录。 在聊天宝主界面,找到您希望恢复聊天记录的对话框…...

备战秋招—模拟版图面试题来了

随着暑期的脚步逐渐临近,电子工程和集成电路设计领域的毕业生们,也将迎来了另一个求职的黄金期——秋招。我们总说机会是留给有准备的人。对于有志于投身于模拟版图设计的学子们来说,为了在众多求职者中脱颖而出,充分备战模拟版图…...

CAN总线简介

1. CAN总线概述 1.1 CAN定义与历史背景 CAN,全称为Controller Area Network,是一种基于消息广播的串行通信协议。它最初由德国Bosch公司在1983年为汽车行业开发,目的是实现汽车内部电子控制单元(ECUs)之间的可靠通信。…...

【HSQL001】HiveSQL内置函数手册总结(更新中)

1.熟悉、梳理、总结下Hive SQL相关知识体系。 2.日常研发过程中使用较少,随着时间的推移,很快就忘得一干二净,所以梳理总结下,以备日常使用参考 3.欢迎批评指正,跪谢一键三连! 文章目录 1.函数清单 1.函数清…...

Rust面试宝典第14题:旋转数组

题目 给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。要求如下: (1)尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 (2)使用时间复杂度为O(n)和空间…...

解决SpringBoot中插入汉字变成?(一秒解决)

在这里url后面加一行配置即可&useUnicodetrue&characterEncodingUTF-8即可 解释 spring.datasource.url: 这里包含了数据库的URL,以及额外的参数如useUnicodetrue用于启用Unicode字符集支持,characterEncodingUTF-8用于指定字符编码为UTF-8&…...

5.26牛客循环结构

1002. 难点: 两层循环条件设置 思路 可以设置三个变量 代码 1003 思路: 与星号双塔差不多,在此基础上加大一点难度 每日练题5.23 (EOF用法)-CSDN博客 代码 1004 代码...

AIGC 004-T2I-adapter另外一种支持多条件组合控制的文生图方案!

AIGC 004-T2I-adapter另外一种支持多条件组合控制的文生图方案! 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 T2I-Adapter 论文提出了一种名为 T2I-Adapter 的轻量级适配器模块,旨在增强文本到图像 (T2I) 扩散模型的语义理解和生成能力。 论文指出…...

详解 Cookies 和 WebStorage

Cookies 和 WebStorage Cookies 和 WebStorageCookies简要介绍操作 Cookies(document.cookie)不足之处 WebStorage简要介绍LocalStorage Vs. SessionStorage操作 WebStorage 三种数据存储方式的对比分析共性差异 REFERENCES Cookies 和 WebStorage Cook…...

BeanFactory、FactroyBean、ApplicationContext

BeanFactory Ioc容器、定义接口规范来管理spring bean的生命周期、依赖、注入,spring中有各种Ioc容器 FactroyBean 定制的工厂Bean,可以通过抽象工厂方式创建的bean,不纳入spring的生命周期、依赖、注入特性,相当于spring给第三…...

【计算机网络】HTTPS 协议原理

加密 1. 加密概念 加密就是把明文 (要传输的信息)进行一系列变换,生成密文。 解密就是把密文再进行一系列变换,还原成明文。 在这个加密和解密的过程中,往往需要⼀个或者多个中间的数据,辅助进行这个过程,这样的数…...

springboot + Vue前后端项目(第十二记)

项目实战第十二记 1.写在前面2. 整合Echarts2.1 vue安装Echarts2.2 使用Echarts2.3 EchartsController编写2.4 Home.vue编写 总结写在最后 1.写在前面 本篇主要讲解系统整合Echarts 2. 整合Echarts 2.1 vue安装Echarts npm i echarts -S2.2 使用Echarts vue中使用echarts的…...

linux 常用命令:find grep ps netstat sudo df du rm

rm 命令 删除 -r 是递归参数(recursive),用于删除目录及其内容。如果不加这个参数,rm 命令无法删除非空目录。-f 是强制参数(force),用于强制删除文件或目录,不会进行任何确认提示…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...