首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
脏页专题
脏页的标记方式详解
脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓
阅读更多...
脏页标记技术的优缺点详解
脏页标记技术的优缺点 一、引言 在数据库系统中,脏页标记技术是一种用于管理数据页修改状态的重要机制。它能够帮助数据库系统有效地跟踪哪些数据页被修改过,以便在适当的时候将这些脏页写入磁盘,保证数据的一致性和持久性。然而,脏页标记技术也并非完美无缺,它既有优点也有一些潜在的缺点。 二、脏页标记技术的优点 (一)提高数据一致性 确保数据完整性 脏页标记使得数据库系统能够清楚地知道哪些数据页已经
阅读更多...
【MySQL(七)】脏页
脏页的定义是内存中和磁盘中的不一致页。 那么脏页是如何产生的? 在之前的介绍中,我们明白了innodb引擎是如何执行更新操作的。大致是:如果数据页在内存中,直接更新内存并写redo log;否则将磁盘中的数据页载入到内存中,更新内存并写redo log。所以当发生了更新操作并且数据页在内存中时,磁盘的修改还没有发生,而仅仅是记录了redo log。这时,就会产生不一致的状态。内存中的页就被称为
阅读更多...
MySQL前缀索引、脏页和干净页、COUNT(*)讨论、表删除内存问题
文章目录 如何加索引如何给身份证号添加索引 SQL语句变慢脏页 (Dirty Pages)干净页 (Clean Pages)为何区分脏页和干净页处理脏页管理策略 flush如何控制 为什么删除表数据后表文件大小不变问题背景核心原因数据存储方式参数影响 解决方案1. 调整`innodb_file_per_table`设置2. 使用表重建来回收空间3. 定期优化表 注意事项online和in
阅读更多...
mysql数据落盘详解_MySQL的Flush-List和脏页的落盘机制
一、回顾 MySQL启动后Buffer Pool会初始化。Buffer Pool也会初始化好N多个空白的缓存页,以及它们的描述数据会被组织成LRU链表以及FreeList 双向链表。 这时你从磁盘中读取一个数据页,会先从Free List中找出一个空闲缓存页的描述信息,然后将你读出的数据页中加载进缓存页中。同时将缓存页的描述信息从Free List中剔除,此外该描述信息块还会被维护进LRU链表中
阅读更多...
lsn mysql_mysql源码片段 innodb启动checkpoint flush脏页 lsn几个关键点检查过程整理
mysql innodb引擎如何判断进程是正常停止(shutdown停止) 还是异常停止(crash 或者 被kill 或者主机宕机导致的进程停止)呢?代码是如何判断的呢 注:代码来源于mysql5.7.27 innodb 启动入口函数 innobase_start_or_create_for_mysql 调用recv_recovery_from_checkpoint_start 检查redo日
阅读更多...
Linux回收内存的时候遇到PageWriteback和PageDirty脏页怎么处理?
概述 我们知道内存回收会遇到各种情况的page,比如正在回写的page(PageWriteback)和脏页(PageDirty)的page,内核会等待PageWriteback完成回写呢,还是说直接跳过正在回写的页面。这两种选择各有优劣,如果等待Writeback完成会影响内存分配性能;如果直接跳过呢可能影响内存回收的效率。PageDirty的page也面临类似的问题,所以我们来看下内核v4-1
阅读更多...