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,因为会对性能有影响

        

      

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

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

相关文章

常量知识点

常量的声明 关键字:const 固定写法: const 变量类型 变量名 初始值; 附上代码: //变量的声明 int i 10; //常量的声明 const int j 11;常量的特点 必须初始化不能被修改 作用:声明一些常用不变的变量,如PI等 附…

代码随想录算法训练营第50天|● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 ●总结

309. 买卖股票的最佳时机含冷冻期llllll 冷冻期算单独一种情况:1.今天持有(已有or今天买)2.已经卖出3.今天卖出4.冷冻期 在最后一天的所有卖出状态中找最大值,包括冷冻期 class Solution:def maxProfit(self, prices: List[int]…

明星IP切片带货爆单营,0基础搞定IP切片带货短视频(69节课)

把握带货趋势,了解切片流程,剪辑带货创收营 课程目录: 01第一章实操链路-第一节IP选择.mp4 02第一章实操链路-第二节账号准备.mp4 03第一章实操链路-第四节开通权限.mp4 04第一章实操链路-第五节货品准备.mp4 05第一章实操链路-第六节素…

一、Servlet和JSP技术概述

注:该系列笔记是用于我在 《Servlet 与 JSP 核心编程》这本书中的学习笔记,无其他意思,侵权请联系2082045221qq.com删除。 ​ 第一章内容较少,所以暂时有用的笔记也不多。 1.1、Servlet 的功用: ​ Servlet 是运行在…

Go语言之GORM框架(二) ——GORM的单表操作

前言 在上一篇文章中,我们对Gorm进行了介绍,而在这一篇文章中我们主要介绍GORM的单表查询与Hook函数,在进行今天的内容之前我们先事先说明一下,下面我们对单表进行操作的表结构如下: type Student struct {ID uint gorm:&qu…

自学动态规划——目标和

目标和 494. 目标和 - 力扣(LeetCode) 这次做的时候递推公式搞错了捏。 经过一些列骚操作(详情见代码首部注释),我们成功将目的转化为:给i个物品,重量和价值一致,最大容量s1&…

GNU/Linux - 时区设置

CST China Standard Time 北京时间/中国标准时间 在时区划分上,属东八区,比协调世界时早 8 小时,记为 UTC8 GMT Greenwich Mean Time 格林威治标准时间 是指位于英国伦敦郊区的格林尼治天文台的标准时间,因为本初子午线被定…

推荐系统学习笔记(四)--基于向量的召回

离散特征处理 离散特征:性别,国籍,英文单词,物品id,用户id 处理: 建立字典:eg:china 1 向量化:eg:one-hot /embedding(低维稠密向量&#xf…

C语言----判断n是否是2的次方数,利用到按位与,算法n(n-1)

//写一个代码,判断n是否是2的次方数 //if(n&(n-1))0 /* 2的0次方是1---二进制1 2的1次方是2---二进制10 2的2次方是4---二进制1002的一次方-1是1---二进制是1 2的二次方-1是3---二进制是11 2的三次方-1是7---二进制是111 n与n-1 按位与后&是0就是0&#xf…

网络模型-BFD与网络协议联动

一、BFD:双向转发检测 双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。 1、BFD优点: 对相邻转发引擎之间的通道提供轻负荷、快速故障检测。这些故障包括接口数据链路&#…

​✨聚梦AI绘图插件-for photoshop(基于ComfyUI) 内测版V0.1发布

🎈背景 photoshop本身是有AI生成能力的,不过限于种种原因,国内使用很不方便。 photoshop也是有AI插件的,不过大多安装起来比较复杂,或者,干脆就会收费。 所以我们做了一个免费的AI插件,期望能…

计算机毕业设计 | SpringBoot招投标 任务发布网站(附源码)

1,绪论 在市场范围内,任务发布网站很受欢迎,有很多开发者以及其他领域的牛人,更倾向于选择工作时间、工作场景更自由的零工市场寻求零散单子来补贴家用。 如今市场上,任务发布网站鱼龙混杂,用户需要找一个…

民国漫画杂志《时代漫画》第24期.PDF

时代漫画24.PDF: https://url03.ctfile.com/f/1779803-1248635000-177187?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

iOS ------多线程NSOperation,NSOperationQueue

1,NSOperation,NSOperationQueue简介 NSOperation,NSOperationQueue是苹果提供我们的一套多线程解决方案。实际上NSOperationa,NSOperationQueue是基于GCD更高一层的封装。但是比GCD更简单易用,代码可读性也会更高。 为什么要使…

基于xilinx FPGA的 FFT IP使用例程说明文档(可动态配置FFT点数,可计算信号频率与幅度)

目录 1 概述2 IP examples功能3 IP 使用例程3.1 IP设置3.2 fft_demo端口3.3 例程框图3.4 仿真结果3.5 仿真验证得出的结论4 注意事项5例程位置 1 概述 本文用于讲解xilinx IP 的FFT ip examples的功能说明,方便使用者快速上手。 参考文档:《PG109》 2 …

Python数据可视化(五)

实现GUI效果 借助 matplotlib,除可以绘制动画内容外,还可以实现用户图形界面的效果,也就是 GUI 效果。 GUI是用户使用界面的英文单词首字母的缩写。接下来,我们就以模块widgets中的类RadioButtons、 Cursor 和 CheckButtons 的使用…

Wpf 使用 Prism 实战开发Day25

首页待办事项及备忘录添加功能 一.修改待办事项和备忘录逻辑处理类,即AddMemoViewModel和AddTodoViewModel 1.AddMemoViewModel 逻辑处理类,添加View视图数据要绑定的实体类 Model public class AddMemoViewModel :BindableBase,IDialogHostAware{public AddMemoV…

【B站 heima】小兔鲜Vue3 项目学习笔记Day03

文章目录 Home1.Home整体结构搭建和分类实现2. banner轮播图功能3. Home 面板组件封装4.新鲜好物和人气推荐实现5. 图片懒加载指令实现6. Home- product产品列表实现7. Home-GoodsItem 组件封装 一级路由1. 整体认识和路由配置2. 面包屑导航3. 一级分类 - 轮播图的实现4. 激活状…

基于Pytorch框架的深度学习EfficientNet神经网络香蕉水果成熟度识别分类系统源码

第一步:准备数据 4种香蕉水果成熟度数据:overripe,ripe,rotten,unripe(过熟、熟、烂、未成熟),总共有13474张图片,每个文件夹单独放一种成熟度数据 第二步:搭…

ZEDmini使用完全指南

ZEDmini使用 ZED stereolabs 开箱测评 使用说明 ubuntu18.04nvidiacuda10 ubuntu18.04ZED SDK安装和使用 Ubuntu16.04安装NVIDIA显卡驱动 查看显卡信息 redwallredwall-G3-3500:~/catkin_ws$ lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation Device …