当前位置: 首页 > 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),用于强制删除文件或目录,不会进行任何确认提示…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes&#xff0…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

SpringTask-03.入门案例

一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨‍&#x1f…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...