Redo Log(重做日志)的刷盘策略

1. 概述

在这里插入图片描述

Redo Log(重做日志)是 InnoDB 存储引擎中的一种关键组件,用于保障数据库事务的持久性和崩溃恢复。InnoDB 将事务所做的更改先记录到重做日志,之后再将其应用到磁盘上的数据页。

刷盘策略(Flush Policy)指的是将内存中的重做日志内容刷写(写入)到磁盘的方式和时间点,以确保数据的持久性和一致性。InnoDB 使用多种策略来处理重做日志的刷盘操作:

  1. WAL(Write-Ahead Logging):InnoDB 是一种WAL存储引擎,它要求在事务提交前将重做日志刷新到磁盘。这意味着在事务提交时,相关的重做日志需要被持久化,确保即使在数据库崩溃的情况下,可以通过重做日志进行崩溃恢复。

  2. Checkpoint:InnoDB 定期执行检查点操作,将内存中的脏页(已被修改但尚未写入磁盘的页)写入磁盘。在执行检查点时,也会确保相关的重做日志已经被持久化。检查点的频率可以通过配置参数来调整。

  3. Write-Ahead Log (WAL) Commit:在 InnoDB 中,事务的提交不仅仅意味着数据页的修改,同时也包括了重做日志的写入。事务提交时,相关的重做日志需要立即被刷新到磁盘。

  4. Double Write Buffer:InnoDB 使用了双写缓冲机制,它可以在写入磁盘之前将磁盘写操作先写入一个缓冲区,以避免数据写入过程中出现的意外崩溃或错误。这有助于确保数据的完整性。

这些策略的综合使用确保了数据库在事务提交后、定期执行检查点、或者在系统崩溃时,都能保持数据的一致性和持久性。通过这些刷盘策略,InnoDB 能够保证在数据库恢复过程中不会丢失提交的事务数据。
在这里插入图片描述

2. 如何手动设置刷盘策略

在 MySQL 中,可以通过设置不同的参数和配置来手动调整 InnoDB 存储引擎的刷盘策略。这些配置可以通过修改 MySQL 的配置文件(通常是 my.cnf 或 my.ini)来实现。以下是一些常用参数和配置:

  1. innodb_flush_log_at_trx_commit:这个参数控制事务提交时日志的刷盘策略,它有三个可选的值:

    • innodb_flush_log_at_trx_commit = 1:每次事务提交时都会将日志刷新到磁盘,确保了最高的持久性(默认值)。
    • innodb_flush_log_at_trx_commit = 2:日志写入到操作系统的缓存(log buffer)并每秒刷写到磁盘(可能会存在少量数据丢失的风险,但提高性能)。
    • innodb_flush_log_at_trx_commit = 0:日志写入到操作系统的缓存(log buffer),并每次检查点时刷写到磁盘(可能存在更多的数据丢失风险)。
  2. innodb_flush_method:用于设置 InnoDB 存储引擎刷写日志和数据文件的方法,其选项包括:

    • innodb_flush_method = fsync:使用标准的 fsync() 系统调用来刷新数据。
    • innodb_flush_method = O_DIRECT:直接写入磁盘而不使用操作系统缓存。
    • 其他值取决于 MySQL 版本和操作系统的支持。
  3. innodb_doublewrite:控制 InnoDB 双写缓冲的开启或关闭,用于数据完整性保护。

    • innodb_doublewrite = 1:开启双写缓冲(默认)。
    • innodb_doublewrite = 0:关闭双写缓冲。
      请注意,更改这些参数可能会对数据库的性能和数据持久性产生影响。在调整这些设置之前,请确保对数据库性能和安全性影响的潜在风险有足够的了解,并进行充分的测试。

要应用这些设置,你可以编辑 MySQL 的配置文件,将所需的参数值设置为适合你需求的值,然后重启 MySQL 服务以使更改生效。

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

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

相关文章

基于CMFB余弦调制滤波器组的频谱响应matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、CMFB余弦调制滤波器组原理 4.2、CMFB调制过程 4.3、CMFB特点 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ......................…

【go channel管道】

1.channel是什么 在Go语言中,Channel是一种用于在Goroutine之间进行通信的数据结构。它类似于队列,可以在一个Goroutine中将数据发送到Channel,然后在另一个Goroutine中接收这些数据。Channel提供了一种同步的方式,确保发送和接收…

深入浅出Django的MTV架构

在现代Web应用程序开发中,采用一种模式或架构以组织代码和功能是至关重要的。在Django中,这种模式被称为MTV模式,即模型(Model)、模板(Template)和视图(View)。尽管它与传…

若依笔记(三):权限控制与数据隔离

目录 数据隔离/权限控制 用户/权限/部门/岗位 ​数据隔离 mybatis的maaper写法 注解和切面 前端路由拦截 已知若依单体的前端采用vue-element-admin,在前端的专栏系列vue-element-admin的动态路由已详细拆解,其最大特点是使用后端返回数据控制前端…

工业级环网交换机如何使用

工业级环网交换机是用于工业环境中的网络通信设备,具有高可靠性、耐用性和适应恶劣环境的特点。下面是一般的使用步骤: 1. 确保交换机的电源供应稳定并连接好电源线。 2. 将需要连接的网络设备(如计算机、服务器、传感器等)通过以…

ssh远程登录服务

目录 1.1版本协商阶段 1.2密钥和算法协商阶段 1.3认证阶段(两种认证方法): 2.1.安装ssh 2.2.配置文件分析: 3.1配置ssh监听端口号 3.2拒绝以root身份登录服务器 3.3虚拟机之间实现免密登录 3.4xshell免密登录 SSH (Secure Shell Protocol,安全壳程序协议)由IETF的网络…

模电学习路径

交流通路实质 列出电路方程1,方程1对时刻t做微分 所得方程1‘ 即为 交流通路 方程1对时刻t做微分:两个不同时刻的方程1相减,并 令两时刻差为 无穷小 微分 改成 差 模电学习路径: 理论 《电路原理》清华大学 于歆杰 朱桂萍 陆文…

透析远程办公效率低下的原因,这些问题有解决方法

远程办公是近年来越来越受欢迎的一种工作方式,许多人喜欢在家中或咖啡馆里工作,享受更自由的工作时间和空间。然而,远程办公也经常面临效率低下的问题,因为一些原因导致在办公室时高效率的工作方式在远程工作上不再适用。 首先&a…

【向生活低头】win7打印机共享给win11使用,win11无法连接问题的解决

打印机是跟win7的电脑连接的,然后试了很多方法,win11都没法添加该打印机去使用。 网上的方法乱七八糟啥都有,但试了以后,发现基本没什么用。 刚刚发现知乎上的一个回答是有用的,这里做记录以备后用。 1.打开控制面板的…

Linux 调试 (objdump/strace/strings)

目录 1. Linux 调试 (objdump/strace/strings)1.1. 查看系统 glibc 版本号1.2. 查看 so/bin 中的依赖1.3. 调试 bin 报错原因1.4. 查看 so/bin 中字符串 1. Linux 调试 (objdump/strace/strings) 1.1. 查看系统 glibc 版本号 1. 第一种 # ldd --version ldd (Ubuntu GLIBC 2.…

修复国产电脑麒麟系统开机出现initramfs 问题

目录预览 一、问题描述二、原因分析三、解决方案四、知识点呀initramfsBusyBox 五、参考链接 一、问题描述 国产麒麟系统出现 initramfs 模式 二、原因分析 一般在拷贝卡顿过程【强制关机】或者电【脑异常断电】的情况下概率性导致系统分区损坏,重启后大概率就会进…

数字孪生技术:金融业合规与自动化的未来

在当今数字化时代,金融行业正积极探索数字孪生技术,以实现更高效的运营和更好的客户体验。数字孪生是一种将实体世界的对象、过程和系统数字化为虚拟模型的技术,金融机构正在充分利用它带来的众多优势。 1. 风险管理与模拟 数字孪生模型可用…

解决ECharts柱形图自定义单个柱子颜色图例无法显示

legend里data和series里的name需要对应series里对象需要设置stack属性,属性值都一样即可显示单柱重点在于series里对象data属性设置,必须使用,否则影响柱体上数值显示tooltip的值需要自定义,否则会显示堆叠柱状图的tooltip格式&am…

Linux解决nvcc -V出现的-bash: nvcc command not found问题

两种解决办法: 1、第一种直接在bashrc文件中添加本地cuda路径: vim ~/.bashrc 定位到内容末尾,最末尾 添加命令: export LD_LIBRARY_PATH/usr/local/cuda/lib export PATH$PATH:/usr/local/cuda/bin添加后激活 source ~/.bashrc…

Ubuntu:解决PyCharm中不能输入中文或者输入一个中文解决方法

1.问题: Ubuntu22.04中,在pycharm里打字输入中文,每次都是只能输入第一个中文,后面输入的都变成了英文字母。。。无论咋调输入法,都没用,反正除了第一个字其他的输进去都是英文,而且汉字下面还…

软考 系统架构设计师系列知识点之设计模式(12)

接前一篇文章:软考 系统架构设计师系列知识点之设计模式(11) 所属章节: 老版(第一版)教材 第7章. 设计模式 第2节. 设计模式实例 11. 某公司开发一个文档编辑器,改变及其允许在文档中直接嵌入…

2023年【R1快开门式压力容器操作】试题及解析及R1快开门式压力容器操作模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年【R1快开门式压力容器操作】试题及解析及R1快开门式压力容器操作模拟试题,包含R1快开门式压力容器操作试题及解析答案和解析及R1快开门式压力容器操作模拟试题练习。安全生产模拟考试一点通结合国家…

Java 线程池规范

目录 1、为什么要使用线程池?2、线程池如何命名3、不要使用 Executors 下自带线程池4、Async 正确用法5、项目中可以定义多个线程池吗? 1、为什么要使用线程池? 在使用多线程时,频繁地创建和销毁线程会带来显著的性能开销。使用线…

论文 辅助笔记:t2vec train.py

1 train 1.1 加载training和validation数据 def train(args):logging.basicConfig(filenameos.path.join(args.data, "training.log"), levellogging.INFO)设置了日志的基本配置。将日志信息保存到名为 "training.log" 的文件中日志的级别被设置为 INFO&…

iZotope Ozone 11 Advanced for mac(臭氧11)11.0.0激活版

iZotope Ozone 11是一款功能丰富的母带处理工具,也是混音师和母带工程师工作中必备的工具之一。它能够满足母带的全部流程,包括均衡器(EQ)、压缩器(Comp)、限制器(Limiter)、多段宽度…