iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >InnoDB的Checkpoint技术是什么
  • 443
分享到

InnoDB的Checkpoint技术是什么

2024-04-02 19:04:59 443人浏览 安东尼
摘要

InnoDB的Checkpoint技术是什么?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!一句话概括,Checkpoint

InnoDB的Checkpoint技术是什么?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

一句话概括,Checkpoint技术就是将缓存池中脏页在某个时间点刷回到磁盘的操作

遇到的问题 ?

InnoDB的Checkpoint技术是什么

都知道缓冲池的出现就是为了解决CPU与磁盘速度之间的鸿沟,免得我们在读写数据库时还需要进行磁盘io操作。有了缓冲池后,所有的页操作首先都是在缓冲池内完成的。

如一个DML语句,进行数据update或delete 操作时,此时改变了缓冲池页中的记录,此时因为缓冲池页的数据比磁盘的新,此时的页就叫做脏页。

不管怎样,总会后的内存页数据需要刷回到磁盘里,这里就涉及几个问题:

  • 若每次一个页发生变化,就将新页的版本刷新到磁盘,那么这个开销是非常大的
  • 若热点数据集中在某几个页中,那么数据库的性能将变得非常差
  • 如果在从缓冲池将页的新版本刷新到磁盘时发生了宕机,那么数据就不能恢复了

Write Ahead Log(预写式日志

WAL策略解决了刷新页数据到磁盘时发生宕机而导致数据丢失的问题,它是关系数据库系统中用于提供原子性和持久性(ACID 属性中的两个)的一系列技术。

WAL策略核心点就是

redo log,每当有事务提交时,先写入 redo log(重做日志),在修改缓冲池数据页,这样当发生掉电之类的情况时系统可以在重启后继续操作

WAL策略机制原理

InnoDB为了保证数据不丢失,维护了redo log。在缓冲池的数据页修改之前,需要先将修改的内容记录到redo log中,并保证redo log早于对应的数据页落盘,这就是WAL策略。

当故障发生而导致内存数据丢失后,InnoDB会在重启时,通过重放redo log,将缓冲池数据页恢复到崩溃前的状态。

Checkpoint

按理说有了WAL策略,我们就可以高枕无忧了。但其问题点又出现在redo log上面:

  • redo log 不可能是无限大的,不能没完没了的存储我们的数据等待一起刷新到磁盘
  • 在数据库怠机恢复时,如果redo log 太大的话恢复的代价也是非常大的

所以为了解决脏页的刷新性能,脏页应该在什么时间、什么情况下进行脏页的刷新就用到了Checkpoint技术。

Checkpoint 的目的

1、缩短数据库的恢复时间

当数据库怠机恢复时,不需要重做所有的日志信息。因为Checkpoint前的数据页已经刷回到磁盘了。只需要Checkpoint后的redo log进行恢复就好了。

2、缓冲池不够用时,将脏页刷新到磁盘

当缓冲池空间不足时,根据LRU算法会溢出最近最少使用的页,若此页为脏页,那么需要强制执行Checkpoint,将脏页也就是页的新版本刷回磁盘。

3、redo log不可用时,刷新脏页

InnoDB的Checkpoint技术是什么

如图redo log 的不可用是因为当前数据库对其设计都是循环使用的,所以其空间并不是无限大。

当redo log被写满, 因为此时系统不能接受更新, 所有更新语句都会被堵住。

此时必须强制产生Checkpoint需要将 write pos 向前推进,推进范围内的脏页都需要刷新到磁盘

Checkpoint 的种类

Checkpoint发生的时间、条件及脏页的选择等都非常复杂。

Checkpoint 每次刷新多少脏页到磁盘?

Checkpoint每次从哪里取脏页?

Checkpoint 什么时间被触发?

面对上面的问题,InnoDB存储引擎内部为我们提供了两种Checkpoint:

  • Sharp Checkpoint

    发生在数据库关闭时将所有的脏页都刷新回磁盘,这是默认的工作方式,参数innodb_fast_shutdown=1

  • Fuzzy Checkpoint

    InnoDB存储引擎内部使用这种模式,只刷新一部分脏页,而不是刷新所有的脏页回磁盘

FuzzyCheckpoint发生的情况

  • Master Thread Checkpoint

    差不多以每秒或每十秒的速度从缓冲池的脏页列表中刷新一定比例的页回磁盘。

    这个过程是异步的,即此时InnoDB存储引擎可以进行其他的操作,用户查询线程不会阻塞

  • FLUSH_LRU_LIST Checkpoint

    因为LRU列表要保证一定数量的空闲页可被使用,所以如果不够会从尾部移除页,如果移除的页有脏页,就会进行此Checkpoint。

    5.6版本后,这个Checkpoint放在了一个单独的Page Cleaner线程中进行,并且用户可以通过参数innodb_lru_scan_depth控制LRU列表中可用页的数量,该值默认为1024

  • Async/Sync Flush Checkpoint

    指的是redo log文件不可用的情况,这时需要强制将一些页刷新回磁盘,而此时脏页是从脏页列表中选取的

    5.6版本后不会阻塞用户查询

  • Dirty Page too much Checkpoint 即脏页的数量太多,导致InnoDB存储引擎强制进行Checkpoint。

    其目的总的来说还是为了保证缓冲池中有足够可用的页。

    其可由参数innodb_max_dirty_pages_pct控制,比如该值为75,表示当缓冲池中脏页占据75%时,强制进行CheckPoint

总结

  • 因为CPU和磁盘间的鸿沟的问题,从而出现缓冲池数据页来加快数据库DML操作

  • 因为缓冲池数据页与磁盘数据一致性的问题,从而出现WAL策略(核心就是redo log)

  • 因为缓冲池脏页的刷新性能问题,从而出现Checkpoint技术

InnoDB 为了提高执行效率,并不会每次DML操作都和磁盘交互进行持久化。而是通过Write Ahead Log 先策略写入redo log保证事物的持久化。

对于事物中修改的缓冲池脏页,会通过异步的方式刷盘,而内存空闲页和redo log的可用是通过Checkpoint技术来保证的。

感谢各位的阅读!看完上述内容,你们对InnoDB的Checkpoint技术是什么大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: InnoDB的Checkpoint技术是什么

本文链接: https://www.lsjlt.com/news/53154.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • InnoDB的Checkpoint技术是什么
    InnoDB的Checkpoint技术是什么?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!一句话概括,Checkpoint...
    99+
    2024-04-02
  • 什么是checkpoint技术
    这篇文章主要讲解了“什么是checkpoint技术”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是checkpoint技术”吧!   ...
    99+
    2024-04-02
  • redis是什么技术
    redis是一种开源的内存数据结构存储系统,主要特点包括内存存储、多种数据结构、高吞吐量、低延迟、持久性和复制。其广泛应用于缓存、会话管理、队列管理、排行榜和社交网络等场景。 Redi...
    99+
    2024-04-19
    redis 社交网络 数据访问
  • 什么是WebSocket技术
    本篇内容主要讲解“什么是WebSocket技术”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是WebSocket技术”吧!在WebSocket规范提出之前,...
    99+
    2024-04-02
  • css技术是什么
    这篇文章给大家分享的是有关css技术是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   CSS是CascadingStyleSheets(层叠样式表)的缩写。   可以...
    99+
    2024-04-02
  • Jspxcms技术是什么
    这篇文章给大家分享的是有关Jspxcms技术是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Jspxcms使用了JavaEE行业主流的技术。使用的框架和技术主要有:SpringMVC3.2、Spring3.2...
    99+
    2023-06-26
  • cdn技术是什么
    本篇内容主要讲解“cdn技术是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“cdn技术是什么”吧!CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过...
    99+
    2023-06-04
  • 什么是DefakeHop技术
    这篇文章主要讲解了“什么是DefakeHop技术”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是DefakeHop技术”吧!深度检测:用DefakeHop检测DeepfakeARL研究人...
    99+
    2023-06-17
  • ai指的是什么技术
    这篇文章将为大家详细讲解有关ai指的是什么技术,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。ai技术是新兴科学技术,AI技术的研究领域包括机器人、语言识别、图像识别、自然语言处理和专家系统等。AI的目的就...
    99+
    2023-06-06
  • html5指的是什么技术
    这篇文章将为大家详细讲解有关html5指的是什么技术,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。html5是构建Web内容的一种语言描述方式,而在广义论及HTML5时,实际指的是包括HTML、CSS和J...
    99+
    2023-06-14
  • 什么是CSS Hack技术
    这篇文章主要介绍“什么是CSS Hack技术”,在日常操作中,相信很多人在什么是CSS Hack技术问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是CSS Hack技术”...
    99+
    2024-04-02
  • Android中的HOOK技术是什么
    目录1. 什么是 Hook2. Hook的应用场景3. Hook的技术方式或框架4. Hook的一般步骤和技巧实战1. 什么是 Hook Hook 英文翻译过来就是「钩子」的意思,那...
    99+
    2023-02-17
    Android HOOK技术 Android HOOK框架
  • chatgpt的技术原理是什么
    chatgpt的技术原理是通过人工的标注方式来训练出一种强化学习的冷启动模型和reward反馈模型,然后再通过强化学习的模式来学习出...
    99+
    2023-02-09
    chatgpt
  • Redis的分片技术是什么
    小编给大家分享一下Redis的分片技术是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!redis分片什么意思?Redis的分...
    99+
    2024-04-02
  • SAP的技术战略是什么
    这篇文章主要为大家分析了SAP的技术战略是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“SAP的技术战略是什么”的知识吧。SAP的技术战略数字化的挑战如...
    99+
    2023-06-05
  • 云服务器关键技术是什么技术
    云服务器(Cloud Host)是一种提供高性能计算服务的服务器,它通常具有以下关键技术: 数据库技术:云服务器使用大型关系数据库,可以存储大量的数据,并提供查询、更新等功能。 负载均衡技术:云服务器通常使用多台服务器进行负载均衡,可以...
    99+
    2023-10-27
    关键技术 服务器 技术
  • mysql innodb指的是什么
    这篇文章主要讲解了“mysql innodb指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql innodb指的是什么”吧! ...
    99+
    2023-05-25
    mysql innodb
  • 什么是香港vps技术
    香港VPS技术是将一台服务器分割成多个虚拟专享服务器的优质服务。为使用者提供了管理配置的自由,可用于企业虚拟化,也可以用于IDC资源租用。简单的说香港VPS就是通过虚拟化技术隔离出来的系统。可以像独立服务器一样,重装操作系统,安装程序,单独...
    99+
    2024-04-02
  • ajax的技术和原理是什么
    本篇文章为大家展示了ajax的技术和原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ajax所包含的技术 大家都知道ajax并...
    99+
    2024-04-02
  • 什么是Linux的虚拟化技术
    Linux的虚拟化技术是一种在Linux操作系统上运行的技术,可以将一个物理服务器分割成多个独立的虚拟服务器,每个虚拟服务器可以运行...
    99+
    2024-03-13
    Linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作