MySQL什么是InnoDB检查点?

2023年 10月 30日 56.1k 0

了解什么是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版本

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论