【MySQL精通之路】InnoDB(6)-磁盘结构(4)-双写缓冲区

主博客:

【MySQL精通之路】InnoDB(6)-磁盘上的InnoDB结构-CSDN博客

上一篇:

【MySQL精通之路】磁盘上的InnoDB结构-表空间-CSDN博客

 下一篇:

【MySQL精通之路】InnoDB(6)-磁盘上的InnoDB结构-Redolog-CSDN博客


目录

1.介绍

1.1 配置变量

1.1.1 innodb_doublewrite

1.1.2 innodb_doublewrite_dir

1.1.3 innodb_doublewrite_files

1.1.4 innodb_doublewrite_pages

1.1.5 innodb_doublewrite_batch_size


1.介绍

双写缓冲区是一个存储区域,在将页面写入InnoDB数据文件中的适当位置之前,InnoDB会在其中写入从缓冲池中刷新的页面。

如果在页面写入过程中出现操作系统存储子系统或意外的mysqld进程退出,InnoDB可以在崩溃恢复期间双写缓冲区中找到页面的良好副本

尽管数据写入两次,但双写缓冲区不需要两倍的I/O开销或两倍的输入/输出操作

通过对操作系统的单个fsync()调用,将数据写入大的顺序块中的双写缓冲区(顺序写)

innodb_flush_method设置为O_DIRECT_NO_FSYNC的情况除外)。

在MySQL 8.0.20之前,双写缓冲区存储区域位于InnoDB系统表空间中。

从MySQL 8.0.20开始,双写缓冲区存储区域位于双写文件中。

1.1 配置变量

为双写缓冲区配置提供了以下变量:

1.1.1 innodb_doublewrite

innodb_doublewrite变量控制是否启用双写缓冲区。

在大多数情况下,它是默认启用的。

要禁用双写缓冲区,请将innodb_doublewrite设置为OFF。

如果您更关心性能而不是数据完整性,请考虑禁用双写缓冲器,例如在执行基准测试时可能会出现这种情况。

从MySQL 8.0.30开始,innodb_doublewrite支持DETECT_AND_RECOVERDETECT_ONLY设置。

DETECT_AND_RECOVER

有了此设置,双写缓冲区将完全启用,数据库页面内容将写入双写缓冲区时进行访问,以修复不完整的页面写入。

DETECT_ONLY

只有元数据被写入双写缓冲区。数据库页面内容未写入双写缓冲区,恢复不使用双写缓冲区时修复不完整的页面写入。此轻量级设置仅用于检测不完整的页面写入。

MySQL 8.0.30以后版本支持对innodb_doublewrite设置的动态更改,该设置可在ON、DETECT_AND_RECOVER和DETECT_ONLY之间启用双写缓冲区。MySQL不支持在启用双写缓冲区的设置和OFF之间进行动态更改,反之亦然。

如果双写缓冲区位于支持原子写入的Fusion io设备上,则会自动禁用双写缓冲区时,而是使用Fusion io原子写入执行数据文件写入。

但是,请注意innodb_doublewrite设置是全局设置

禁用双写缓冲区时,将禁用所有数据文件的双写缓冲区,包括不位于Fusion io硬件上的数据文件。此功能仅在Fusion io硬件上受支持,并且仅在Linux上为Fusion io NVMFS启用。为了充分利用此功能,建议将innodb_flush_method设置为O_DIRECT。

1.1.2 innodb_doublewrite_dir

innodb_doublewrite_dir变量(在MySQL 8.0.20中引入)定义了innodb创建doublewrite文件的目录。如果未指定目录,则在innodb_data_home_dir目录中创建双写文件,如果未指定,则默认为数据目录。

哈希符号“#”会自动作为指定目录名的前缀,以避免与架构名称冲突。但是,如果是“.”,则为“#”。或者在目录名中显式指定了“/”前缀,则哈希符号“#”不会作为目录名的前缀。

理想情况下,双写目录应该放在可用的最快存储介质上

1.1.3 innodb_doublewrite_files

innodb_doublewrite_files变量定义了双写文件的数量。

默认情况下,为每个缓冲池实例创建两个双写文件:一个刷新列表双写文件一个LRU列表双写

刷新列表双写文件用于从缓冲池刷新列表中刷新的页面。

刷新列表双写文件的默认大小是  InnoDB页面大小  x   双写页面字节

LRU列表双写文件用于从缓冲池LRU列表中刷新的页面。它还包含用于单页刷新的插槽。

LRU列表双写文件的默认大小为  InnoDB页面大小  x(双写页面+(512 / 缓冲池实例数)),其中512是为单页刷新保留的插槽总数

至少有两个双写文件。双写文件的最大数量是缓冲池实例数量的两倍。

(缓冲池实例的数量由innodb_buffer_pool_instances变量控制。)

双写文件名的格式如下:#ib_page_size_file_number.dblwr(或带有DETECT_ONLY设置的.bdblwr)。

例如,以下双写文件是为一个InnoDB页面大小为16KB、只有一个缓冲池的MySQL实例创建的:

#ib_16384_0.dblwr
#ib_16384_1.dblwr

innodb_doublewrite_files变量用于高级性能调优。默认设置应该适合大多数用户

1.1.4 innodb_doublewrite_pages

innodb_doublewrite_pages变量(在MySQL 8.0.20中引入)控制每个线程的最大doublewrite页面数。如果未指定任何值,则将innodb_doublewrite_pages设置为innodb_write_io_threads值。此变量用于高级性能调整。默认值应该适合大多数用户。

1.1.5 innodb_doublewrite_batch_size

innodb_doublewrite_batch_size变量(在MySQL 8.0.20中引入)控制一个批中要写入的双写页面的数量。此变量用于高级性能调整。默认值应该适合大多数用户。

从MySQL 8.0.23开始,InnoDB会自动加密属于加密表空间的双写文件页

(请参见“InnoDB静止数据加密”)。

同样,属于页面压缩表空间的双写文件页面也会被压缩。因此,双写文件可以包含不同的页面类型,包括未加密未压缩的页面、加密的页面、压缩的页面以及加密和压缩的页面。

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

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

相关文章

报名开启!2024 开源之夏丨Serverless Devs 课题已上线!

Serverless 是近年来云计算领域热门话题,凭借极致弹性、按量付费、降本提效等众多优势受到很多人的追捧,各云厂商也在不断地布局 Serverless 领域。 Serverless Devs 是一个由阿里巴巴发起的 Serverless 领域的开源项目,其目的是要和开发者们…

leetcode以及牛客网单链表相关的题、移除链表元素、链表的中间节点、合并两个有序链表、反转链表、链表分割、倒数第k个节点等的介绍

文章目录 前言一、移除链表元素二、链表的中间节点三、合并两个有序链表四、反转链表五、链表分割六、倒数第k个节点总结 前言 leetcode以及牛客网单链表相关的题、移除链表元素、链表的中间节点、合并两个有序链表、反转链表、链表分割、倒数第k个节点等的介绍 一、移除链表元…

最近最少使用缓存

题目:请设计实现一个最近最少使用缓存,要求如下两个操作的时间复杂度都是O(1)。 get(key):如果缓存中存在键key,则返回它对应的值;否则返回-1.put(key,value):如果缓存中之前包含键key,则它的值…

扫盲:如何提升医学图像分割性能-to do list

导读:本文主要讨论了如何改进图像分割项目中的分割性能,包括一般性和具体性的问题解决方案,以及如何通过调整模型参数、改善数据集质量、优化模型架构、调整超参数、增加训练时长、改善图像分辨率和后处理技术等方法来提高分割效果。 图像分…

【MySQL精通之路】MySQL的使用(9)-设置环境变量

可以在命令提示符下设置环境变量,以影响命令处理器的当前调用,也可以永久设置环境变量以影响未来的调用。 要永久设置变量,可以在启动文件中进行设置,也可以使用系统为此提供的接口进行设置。 有关具体细节,请参阅命…

拼多多暂时超越阿里成为电商第一

关注卢松松,会经常给你分享一些我的经验和观点。 拼多多的财报又炸裂了: 拼多多发布了第一季度财报,营收868亿,增长了131%,净利润279亿,增长了246%,营销服务收入424亿,也就是商家的…

小林coding笔记

MySQL执行流程 MySQL 的架构共分为两层:Server 层和存储引擎层。Server 层负责建立连接、分析和执行 SQL。存储引擎层负责数据的存储和提取。 Mysql执行 启动Mysql net start mysql登陆 mysql -u root -p输入密码

SwiftUI中的动画.animation和withAnimation

动画是通过改变视图的状态来给视图添加平滑视图变化的能力。SwiftUI中有两种类型的动画:隐式动画和显式动画。 不管是哪种动画,我们都需要一个被State包装的状态属性值,通过这个值的改变来促使与之相关的UI刷新,继而执行动画。 隐式动画.ani…

mariadb10.5.8版本主从搭建

主从服务安装我们先略过了,网上的安装教程一大把,直接开始讲配置 主服务配置 [mysqld] ...server-id1 #开启二进制日志 log-binmysql-bin #中继日志的前缀名称 relay-logmysql-relay-bin #控制binlog的写入频率。每执行多少次事务写入一次 sync_binlog…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-19讲 串口实验UART

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

水平垂直居中的六种方法

1. 使用 Flexbox Flexbox 是一个现代的布局模型,可以轻松实现元素的水平和垂直居中。 .container {display: flex;justify-content: center; /* 水平居中 */align-items: center; /* 垂直居中 */height: 100vh; /* 视窗高度 */ }2. 使用 Grid CSS Grid 是另一种强…

【Golang】 Go语言中如何将参数添加到URL中

文章目录 前言一、参数解释二、代码实现三、总结 前言 在开发Web应用程序时,我们经常需要将参数添加到URL中,以便将数据发送到服务器。这些参数通常用于GET请求,以向服务器传递查询条件或其他信息。在Go语言中,我们可以使用net/u…

Vivado IP核的快速入门 官方手册和例程

在IP Catalog中选择要使用的IP核,可以查看支持的器件与资料。 在设计源sources页面中选中配置完成的IP核点击右键选择 Open IP Example Design,等待工程加载完成即可,可以点击Run Simulation进行功能仿真进行IP核的学习。 参考&#xff1…

Mac Pro中的开源虚拟机UTM安装ubuntu(Applce M1,M2芯片)(1)

MacPro安装UTM 1 UTM 下载UTM虚拟机链接: https://mac.getutm.app/ 建议官网下载: 下载 Ubuntu Arm 64版 下载 Ubuntu Arm 64版链接: https://cn.ubuntu.com/download/server/arm 2 安装UTM 2.1 安装在mac上 2.2 点Open 2.3 建虚拟机### 2.4 点出虚拟机 2.5 O…

系统分析师-案例分析-数据库

系统分析师-案例分析-数据库 更多软考资料 https://ruankao.blog.csdn.net/ 文章目录 系统分析师-案例分析-数据库数据库考察知识点规范化函数依赖范式1NF2NF3NF 规范化问题不规范化反规范化设计反规范化设计同步问题 并发控制性能优化完整性约束视图安全分布式数据库特点优点…

前端性能优化:从系统分析讲到实践策略

前言 在过去几年,我曾经写过几篇和性能优化相关的文章,例如有性能优化方法相关的,有性能监控相关的。但是都只关注于局部,没有从整体上去看待、分析性能优化。所以本文打算尝试从整体上去分析前端性能优化,从性能指标…

使用 RisingWave 和 Redash 处理和可视化实时数据

在创建流处理管道时,需要两个关键组件:一个用于处理和转换数据,一个用于数据可视化。RisingWave 和 Redash 就提供了一个优秀的解决方案。 RisingWave 是一个支持实时数据处理的分布式 SQL 流数据库。它提供增量更新的物化视图,使…

TRICONEX 3720 技术特点

TRICONEX 3720是一款安全管理系统通讯模块,通常用于工业自动化和安全系统中。它的主要作用是在控制系统中处理和管理数据通讯,确保信息在各个组件之间的有效传递。以下是关于TRICONEX 3720的详细介绍: 功能定位:TRICONEX 3720作为…

计算机操作系统总结(1)

1操作系统的概念(定义)功能和目标 (1)什么是操作系统? (2)操作系统的功能和目标—作为系统资源的管理者 (3)操作系统的功能和目标—向上层提供方便易用的服务 (4)操作系…

IP学习——ospf1

OSPF:开放式最短路径优先协议 无类别IGP协议:链路状态型。基于 LSA收敛,故更新量较大,为在中大型网络正常工作,需要进行结构化的部署---区域划分、ip地址规划 支持等开销负载均衡 组播更新 ---224.0.0.5 224.0.0.6 …