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,一经查实,立即删除!

相关文章

明星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…

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

离散特征处理 离散特征:性别,国籍,英文单词,物品id,用户id 处理: 建立字典:eg:china 1 向量化:eg:one-hot /embedding(低维稠密向量&#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: 资源来源网络!

基于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 …

sourcetree推送到git上面

官网:Sourcetree | Free Git GUI for Mac and Windows 下载到1次提交 下载后打开 点击跳过 下一步 名字邮箱 点击clone 把自己要上传的代码粘贴到里面去 返回点击远程->点击暂存所有 加载完毕后,输入提交内容提交 提交完成了 2次提交 把文件夹内的…

【java程序设计期末复习】chapter4 类和对象

类和对象 编程语言的几个发展阶段 (1)面向机器语言 计算机处理信息的早期语言是所谓的机器语言,使用机器语言进行程序设计需要面向机器来编写代码,即需要针对不同的机器编写诸如0101 1100这样的指令序列。 (2&#x…

【JavaScript】文件下载

文件下载的消息格式 服务器只要在响应头中加入 Content-Disposition: attachment; filename"kxx" 即可触发浏览器的下载功能其中: attachment 表示附件,浏览器看到此字段,触发下载行为(不同的浏览器下载行为有所区别&…

【二叉树】力扣OJ题

文章目录 前言1. 翻转二叉树1.1 题目1.2 解题思路1.3 代码实现1.4 时空复杂度 2. 对称二叉树2.1 题目2.2 解题思路2.3 代码实现2.4 时空复杂度 3. 平衡二叉树3.1 题目3.2 解题思路3.3 代码实现3.4 时空复杂度 结语 前言 本篇博客主要介绍二叉树的经典 OJ 题,题目主…

MyBatis详细教程!!(入门版)

目录 什么是MyBatis? MyBatis入门 1)创建工程 2)数据准备 3)配置数据库连接字符串 4)写持久层代码 5)生成测试类 MyBatis打印日志 传递参数 MyBatis的增、删、改 增(Insert&#xff0…

有什么普通人可以做的赚钱软件?盘点9个适合普通人长期做的软件

在这个互联网高速发展的时代,智能手机已经成为我们生活中不可分割的一部分。众多APP的涌现,使得许多朋友都在寻求通过手机赚钱的方法。 然而,面对市面上琳琅满目的网上赚钱APP,我们该如何挑选呢?别担心,今…