我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何设置innodb_log_file_size

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何设置innodb_log_file_size

在这片文章中,我会提供一些关于如何设置 MySQL的 innodb_log_file_size 参数的一些建议。

跟其他数据库管理系统一样,MySQL通过日志来实现数据的持久性(在使用InnoDB存储引擎的前提下)。这确保了当一个事务提交后,其相关数据在崩溃或者服务器掉电的情况下不会丢失。

MySQL的InnoDB 存储引擎使用一个指定大小的Redo log空间(一个环形的数据结构)。Redo log的空间通过innodb_log_file_sizeinnodb_log_files_in_group(默认2)参数来调节。将这俩参数相乘即可得到总的可用Redo log 空间。尽管技术上并不关心你是通过innodb_log_file_size还是innodb_log_files_in_group来调整Redo log空间,不过多数情况下还是通过innodb_log_file_size 来调节。

为InnoDB引擎设置合适的Redo log空间对于写敏感的工作负载来说是非常重要的。然而,这项工作是要做出权衡的。你配置的Redo空间越大,InnoDB就能更好的优化写操作;然而,增大Redo空间也意味着更长的恢复时间当出现崩溃或掉电等意外时。

关于恢复时间,并不好预测对于一个指定的 innodb_log_file_size 值出现崩溃是需要多长的恢复时间--他取决于硬件能力、MySQL版本以及工作负载等因素。然而,一般情况下我们可以按照每1GB的Redo log的恢复时间大约在5分钟左右来估算。如果恢复时间对于你的使用环境来说很重要,我建议你做一些模拟测试,在正常工作负载下(预热完毕后)模拟系统崩溃,来评估更准确的恢复时间。

虽然恢复时间可以作为一个限制innodb_log_file_size的参考因素,也还有一些别的方式可以观察该参数设置是否“合理”(尤其是如果你安装了PMM: Percona Monitoring and Management)

检查Percona Monitoring and Management的“MySQL InnoDB Metrics”仪表盘,如果你看到如下的图像:
如何设置innodb_log_file_size
图中 Uncheckpointed Bytes 已经非常接近 Max Checkpoint Age,那么你几乎可以确定当前的 innodb_log_file_size 值因为太小已经某种程度上限制了系统性能。增加该值可以较为显著的提升系统性能。

而如果你看到的类似下图:
如何设置innodb_log_file_size
该图中 Uncheckpointed Bytes 远小于 Max Checkpoint Age,这种情况下再增加 innodb_log_file_size 就不会有明显性能提升。

注意:很多MySQL设置都是相互关联的,虽然一个特定的Redo log 空间对于一个较小的InnoDB Buffer Pool值来说可能已经足够,但是较大的InnoDB Buffer Pool值还是期望更大的Redo log 空间以达到更好的表现。

另一件需要记住的事:我们之前说的恢复时间,取决于 Uncheckpointed Bytes 而不是总的Redo log空间。如果你在增加了innodb_log_file_size之后并未观察到恢复时间的增加,那可能就是之前的配置在你当前的工作负载下已经够用,你增加的空间并未被完全利用。

另一个观察innodb_log_file_size的途径是 Redo log空间的使用情况:
如何设置innodb_log_file_size
这张图片展示了每小时写入日志文件的总数据量和innodb_log_file_size的值。上图中,我们有2G的Redo log空间但是每小时却有12G多的数据被写入日志文件。这意味着Redo空间差不多每十分钟就轮转一次。

而InnoDB 在每次Redo log空间轮转时都要将innodb buffer pool中的每个脏页都刷新到磁盘上。当这个操作出现越少时InnoDB越能得到更好的表现(对SSD硬盘的磨损也越少)。我希望看到这个操作的频率能达到至少15分钟一次,当然越少越好。

关于Redo 空间的使用情况,如果没有安装PMM的话,也可以通过下面的命令来观察每小时的写入量(MB):

a=$(mysql -uuser -p'passwd' -e "show engine innodb status\G" | grep "Log sequence number" | awk '{print $4}'); sleep 60; b=$(mysql -uuser -p'passwd' -e "show engine innodb status\G" | grep "Log sequence number" | awk '{print $4}'); let "res=($b-$a)*60/1024/1024";echo $res

总结:
设置合适的innodb_log_file_file_size对于平衡性能和恢复时间来说非常重要。但是记住,你的场景下的恢复时间由于受所方面因素影响,并不能完全准确的预估出来。我希望本文中讨论的几点能帮助你设置更合理的innodb_log_file_file_size。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何设置innodb_log_file_size

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

beacon如何设置

这篇文章主要介绍了beacon如何设置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。beacon帧的值大小需要考虑无线环境,设备性能及区域内信号强度或干扰等因素;一般默认10
2023-06-20

ipv6如何设置

这篇文章主要介绍“ipv6如何设置”,在日常操作中,相信很多人在ipv6如何设置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ipv6如何设置”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!1、首先,通过路
2023-07-02

如何设置php.ini

这篇文章主要讲解了“如何设置php.ini”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何设置php.ini”吧!设置php.ini的方法:1、将下载好的php安装包解压;2、找到php.
2023-06-21

win1075hz如何设置

本篇内容介绍了“win1075hz如何设置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!win1075hz调节方法:1、右击桌面空白处,点击
2023-07-01

PHP如何设置区域设置信息

本文详细讲解了如何使用setlocale()函数在PHP中设置区域设置信息,包括语法、参数、返回值和示例。此外,还介绍了其他设置区域设置信息的方法,如php.ini配置文件、环境变量和putenv()函数。最后,总结了注意事项和最佳实践,建议在脚本开头设置区域设置信息,并覆盖特定类别以满足特定需求。
PHP如何设置区域设置信息
2024-04-02

redis如何设置存储时间设置

在Redis中,可以使用EXPIRE命令来设置键的过期时间。该命令接受两个参数,第一个参数为键名,第二个参数为过期时间,单位为秒。例如,以下命令将键mykey的过期时间设置为3600秒(1小时):```EXPIRE mykey 3600``
2023-09-11

jQuery如何设置全局动画设置?

jQuery全局动画设置通过修改$.fx.animationSettings对象,您可以配置所有jQuery动画的行为,包括持续时间、缓动类型和完成回调。可用的选项包括:持续时间(毫秒)缓动类型完成回调函数动画排队开关自定义缓动函数这些设置影响所有使用animate()方法的动画。您还可以覆盖全局设置,为特定动画设置自定义选项。此外,您可以禁用动画、执行自定义步骤操作或自定义速度预设行为。
jQuery如何设置全局动画设置?
2024-04-07

Java如何设置区域设置信息

Java区域设置配置指南Java提供多种方法设置区域设置信息,适应不同地区用户需求。使用Locale、ResourceBundle和TimeZone等类,可设置语言、国家、时区和日期时间格式等信息。Properties类和CLI参数也可以用于设置区域设置。通过设置语言、获取信息和将区域设置应用于应用程序不同方面,开发者可确保应用程序适应全球受众。
Java如何设置区域设置信息
2024-04-02

ie如何设置javascript

这篇文章将为大家详细讲解有关ie如何设置javascript,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点击,给用户提供更好的体验。2
2023-06-14

css如何设置transform

这篇文章给大家分享的是有关css如何设置transform的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css设置transform的语法是“transform: none|transform-functions
2023-06-15

php如何设置SESSION_ID

本篇内容主要讲解“php如何设置SESSION_ID”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何设置SESSION_ID”吧!php设置SESSION_ID的方法:首先创建一个PHP
2023-06-20

win7 3d如何设置

这篇“win7 3d如何设置”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win7 3d如何设置”文章吧。win73d设置教
2023-07-01

windows hello如何设置

这篇文章主要介绍“windows hello如何设置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows hello如何设置”文章能帮助大家解决问题。windows hello设置教程:1
2023-07-01

chrome如何设置javascript

这篇文章给大家分享的是有关chrome如何设置javascript的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。chrome设置javascript的方法:首先打开Google Chrome;然后点击右上角选择设
2023-06-14

编程热搜

目录