什么是检查点技术

分类:编程技术 时间:2024-02-20 15:43 浏览:0 评论:0
0
本文主要讲解“什么是检查点技术”。文章中的解释简单明了,易于学习和理解。请跟随小编的思路慢慢深入,一起来学习学习《什么是关卡技术》!

在 MySQL 中,DML 语句(例如删除或更新)会更改页面中的记录。那么此时该页是脏的,即缓冲池中该页的版本比磁盘上的版本新,数据库需要对其进行缓冲。池的数据被刷新到磁盘。

如果每次缓冲池中的页面发生变化,都必须将新版本的页面刷新到磁盘,那么性能消耗一定非常大。如果在将脏页刷新到磁盘的过程中发生停机,则数据无法恢复。为了避免数据丢失的问题,事务数据库系统都采用Write Ahead Log策略,即先记录日志,先写重做日志,然后然后修改页面。

假设以下场景,缓冲池中的脏页是否可以刷新回磁盘?

1.缓冲池足够大,可以缓冲磁盘上的所有数据

2。重做日志可以无限增长

对于第一种场景:

在生产环境中,3TB大小的数据库并不罕见,甚至更大,但是服务器3TB内存几乎不存在,所以这种场景几乎是不可能的。

对于第二种场景:

重做日志无限增加,这意味着DBA或SA需要实时监控存储使用情况,并且设备可以无限动态扩展。这个场景也是几乎不可能实现的。

即使上述场景能够实现,一旦MySQL服务器宕机,重新应用重做日志的时间也会很长,甚至几年。

因此,检查点技术应运而生,主要解决以下问题:

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

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

3.当重做日志不可用时,刷新脏页

在innodb中,有两个检查点,分别是:

Sharp Checkpoint

p>

Fuzzy Checkpoint

当数据库关闭时,夏普检查点将脏页刷新到磁盘。这是默认的工作方式,即innodb_fast_shutdown=1。

如果数据库运行时使用尖锐的检查点,数据库的可用性会受到很大影响。数据库运行时,采用模糊检查点刷新脏页,即只刷新部分脏页,而不是全部脏页到磁盘。

innodb中可能会出现以下尖锐检查点:

主线程检查点

FLUSH_LRU_LIST检查点

Asnc/Sync Flush检查点

脏页检查点过多

主线程检查点

新版本会刷脏页清除一个线程独立地,每秒或每十秒将脏页刷新到磁盘。

FLUSH_LRU_LIST检查点

当LRU列表没有足够的空闲页时,就会被刷新。

FLUSH_LRU_LIST检查点

当重做日志不可用时,刷新它。

脏页过多检查点

当缓冲池中脏页过多时,会自动刷新。这是由参数 innodb_max_dirty_pages_pct 控制的。当它的值为75时,意味着当缓冲池脏页占据75%时,将强制执行检查点并将一些脏页刷新到磁盘。

感谢您的阅读。以上就是《什么是检查点技术》的内容。经过文章的学习,相信大家对什么是检查点技术有了更深入的了解。要理解,具体用法需要通过实践来验证。在此,小编将为大家推送更多相关知识点的文章,欢迎关注!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 什么是检查点技术

用户评论