GreatSQL社区

搜索

chongzh

MySQL什么是InnoDB检查点?

chongzh 已有 721 次阅读2023-10-28 19:52 |个人分类:Mysql 原理|系统分类:原理&产品解读

了解什么是InnoDB检查点,以及它们如何与修改页面的刷新交互。


检查点描述了将修改后的数据同步到磁盘的过程。当您修改InnoDB表中的数据时,InnoDB存储引擎会更改内存中的数据innodb_buffer_pool_size指示InnoDB可以为此使用多少内存)。当您提交事务时,InnoDB存储引擎必须将您的事务记录在磁盘上。这将写入重做日志文件。这些日志文件在磁盘上的大小是固定的(由innodb_log_file_size和innodb_log_files_in_group设置)。

如果75%已满,那么InnoDB必须将内存中已修改的数据同步到磁盘,以保持数据完整性。这被称为异步检查点,它只阻塞执行写操作的单个线程。如果线程达到85 %, InnoDB就会使用同步检查点来阻塞所有线程,直到线程完成。

InnoDB实际上使用了一种“模糊”检查点策略,这意味着修改后的数据不会一次写入磁盘(这可能需要一段时间,并且会阻止用户访问InnoDB表),而是以小块的方式进行同步。这是通过后台刷新完成的,其中一部分是自适应刷新,它根据剩余的日志空间量改变其工作速率。延迟写页面是好的,因为这允许有更长的时间让另一个操作可能改变同一页面上的某些内容,从而潜在地减少页面写的总数。

日志文件越大,InnoDB需要检查点或进行普通页面刷新的频率就越低。这提高了运行时性能,因为它减少了磁盘I/O。但是,在5.5版之前,如果服务器崩溃,较大的日志文件可能会将恢复时间增加到不可接受的水平,因为InnoDB必须读取日志文件并恢复自上一个检查点以来的所有更改。5.5版不再使用相同的恢复逻辑,因此您不再需要人为减少InnoDB日志文件的大小来限制恢复时间。没有办法InnoDB的一个检查站。

有关更多详细信息,请参见InnoDB检查点手册页对于您的MySQL版本

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-5-1 09:17 , Processed in 0.012761 second(s), 8 queries , Redis On.
返回顶部