问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

innodb 数据库中的脏页数据是怎么产生的

发布网友 发布时间:2022-04-29 04:59

我来回答

2个回答

热心网友 时间:2022-04-08 02:30

由于等待和 Buffer Pool 的各种 latch 相关,而且 delete 操作本身会产生大量脏数据,那会不会跟刷脏页操作相关呢?我们看下 SQL 被 kill 的量和刷脏页的量之间的关系。
发现每秒刷脏页的量和 SQL 被 kill 的量的曲线有点相近,看着刷脏页的量挺大的,但是每秒 delete 的 TPS 又不是很高,为啥这么低的 TPS 会让刷脏页频率抖动以及 SQL 执行变慢呢?曾经换过不同批次的机器,发现问题依旧,并没有改善,说明并不是机器本身的问题。继续浏览 buffer pool 相关的监控指标,像是发现新*一样的发现了一个异常指标脏页比例达到了快 90% !!!太吓人了!!!为啥脏页比例会达到 90% 呢,无非就是刷脏页的速度跟不上产生的速度,要么就是 IO 能力不行,要么就是产生脏页的速度过快,要么就是内存池太小,导致 Buffer Pool 被脏页占满。那么这个脏页比例达到快 90% 会有什么问题呢?
innodb_max_dirty_pages_pct_lwm 表示的是当脏页比例达到该参数表示的低水位时候,刷脏线程就开始预刷脏来控制脏页比例,避免达到innodb_max_dirty_pages_pct 。刷脏页的最大 IO 能力是受 innodb_io_capacity 和 innodb_io_capacity_max 控制。生产上我们将 innodb_max_dirty_pages_pct_lwm 设置成了50当脏页比例大于 innodb_max_dirty_pages_pct 时候,InnoDB 会进行非常激烈的刷脏页操作,但是由于 DELETE 操作还是在进行,脏页产生的速度还是非常快,刷脏页的速度还是跟不上脏页产生的速度。为了避免脏页比例进一步扩大,更新将会被堵塞,从而导致 DELETE 执行变慢,直至被 KILL。发现问题之后,根据我们之前的假设,有三种解决方案:1. 调大 io_capacity ,但是由于主机是多实例部署,IO 占用已经比较高,PASS。2. 降低脏页产生速度,也就是调低 DELETE 速度,因为数据产生的速度很快,为了避免删除跟不上插入的速度,也被 PASS。3. 调大 Buffer Pool,可以容纳更多的脏页。说干就干,得益于 MySQL 5.7 的在线调整 Buffer Pool,立马将 Buffer Pool Size 扩了一倍,效果非常显著。
脏页比例立马下降,被 kill 的 SQL 也下降了。平均 SQL rt 下降很多。

总结
得益于 MySQL 的开源,很多错误都可以直接确认到对应的代码,大致定位到问题发生的地方,给问题排查带来了很多方便。同时对 MySQL buffer pool 的命中率以及脏页比例也要多多关注,对 SQL 的性能都有很大的影响。

热心网友 时间:2022-04-08 03:48

1. 建立InnoDB数据库:
运行环境:RHEL4U5 + mysql5.0
默认情况下mysql自动安装InnoDB数据引擎,InnoDB的数据库文件和日志文件在默认的数据库数据库目录(/var/lib/mysql 或者/usr/local/mysql/var),现在由于我们要重新建立InnoDB数据库,所以将原来的InnoDB数据库备份好后,删除即可,建立InnoDB数据库的操作步骤:
默认的数据库数据目录:/var/lib/mysql
1) shell> service mysqld stop # 停止mysql进程
2) shell> mv /var/lib/mysql/ib* /var/lib/mysql/InnoDB-old # 备份好原来的InnoDB的数据库文件
3) shell> mkdir /var/lib/mysql/InnoDB #建立存放新InnoDB数据库文件的目录,默认不自动创建目录
4) shell> vi /etc/my.cnf #编辑InnoDB数据库的相关的配置选项
[mysqld]
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/lib/mysql/InnoDB/ #innodb数据库数据文件目录
innodb_data_file_path = ibdata2:100M:autoextend:max:2000M #数据文件名称及大小
innodb_log_group_home_dir = /var/lib/mysql/InnoDB/
innodb_log_arch_dir = /var/lib/mysql/InnoDB/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M #缓冲池的大小,一般设置为主存的50%-80%
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M #日志文件的大小,一般设置为主存的25%
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1 #事务
innodb_lock_wait_timeout = 50
5) shell> chown mysql:mysql /var/lib/mysql/InnoDB/ #设置InnoDB数据库目录的权限,否则无法启动mysql
6) shell> service mysqld start # 启动mysqld进程
这时在/var/lib/mysql/InnoDB 目录中应该可以看到新生成的InnoDB文件,那么InnoDB数据库就生成了。

2. 使用InnoDB数据库:
1)在配置文件中的[mysqld]字段添加 default-storage-engine=INNODB ,将默认的数据库引擎修改为InnoDB
2} 在创建表的时候,手动指定表的类型:
CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB
注意:修改mysql配置文件需要重启启动mysqld进程
innodb 数据库中的脏页数据是怎么产生的

刷脏页的最大 IO 能力是受 innodb_io_capacity 和 innodb_io_capacity_max 控制。生产上我们将 innodb_max_dirty_pages_pct_lwm 设置成了50当脏页比例大于 innodb_max_dirty_pages_pct 时候,InnoDB 会进行非常激烈的刷脏页操作,但是由于 DELETE 操作还是在进行,脏页产生的速度还是非常快,刷脏页的...

ZESTRON表界面分析

在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸等关键领域,还通过高精度仪器如固体表面Zeta电位分析仪等,确保数据准确可靠。这些分析手段对于优化产品配方、改进生产工艺、预防失效问题等具有重要意义,是我们不断提升产品性能与质量的重要工具。表面污染分析包括评估表面上存在的颗粒、残留物或物质。通过利用显微镜、光谱学和色谱法等技术,分析人员可以识别和表征污染物,以确定其成分和来源。这种分析在电子、制药和制造等各个行业中至关重要,以确保产品质量、性能和安全性。了解表面...

MySQL:脏页刷盘

InnoDB在处理更新语句时,先写内存再写redo log,并不会立即将数据页的更新落地到磁盘(WAL机制),这就会产生升内存数据页和磁盘数据页的数据不一致的情况,这种数据不一致的数据页称为 脏页 ,当脏页写入到磁盘(这个操作称为flush)后,数据一致后称为干净页。第3种是系统空闲不会有性能问题,第4...

MySQLInnoDB四个事务级别与脏读、不重复读、幻读是什么

脏页是内存的缓冲池中已经修改的page,未及时flush到硬盘,但已经写到redo log中。读取和修改缓冲池的page很正常,可以提高效率,flush即可同步。脏数据是指事务对缓冲池中的行记录record进行了修改,但是还没提交!!!,如果这时读取缓冲池中未提交的行数据就叫脏读,违反了事务的隔离性。脏读就是指当一个事务正在访问数据...

MySQL的WAL(Write-Ahead Logging)机制

MySQL 中有一个机制,刷脏页的时候如果数据页旁边的数据页也是脏页,那么就会一起刷掉,而且这个逻辑是可以蔓延的,所以对于每个相邻的数据页,都会被一起刷。在 InnoDB 中,innodb_flush_neighbors 参数就是用来控制这个行为的,值为 1 的时候会有上述的“连坐”机制,值为 0 时表示不找邻居,自己刷...

MySQL字符串索引&脏页刷盘

内存中的数据被写入磁盘以后,内容变为一致,此时该内存页就被称为干净页。什么叫刷脏页?内存数据页中的内容被写入磁盘数据页中的过程称为刷脏页。什么时候会刷脏页?InnoDB如何控制刷脏页的频率?首先确认InnoDB所在主机的IO能力,此时需要用到数据库的innodb_io_capacity参数,该参数推荐设置为磁盘的IOPS...

SQL Server中所说的“脏页”是什么意思

一、Checkpoint(检查点)Checkpoint会搜索整个data cache,将脏页回写到硬盘。以下情况通常会触发checkpoint:1、运行Checkpoint 命令。2、使用alter database往数据库中添加了文件,或者从数据库中删除了文件。3、备份数据库。在数据库备份之前,数据库引擎会自动执行检查点,以便在备份中包含对数据库数据页面...

InnoDB引擎之-两次写(Double Write)

如果发生了极端情况(断电),InnoDB再次启动后,发现了一个Page数据已经损坏,那么此时就可以从double write buffer中进行数据恢复了。 当一系列机制(main函数触发、checkpoint等)触发数据缓冲池中的脏页进行刷新到data file的时候,并不直接写磁盘,而是会通过memcpy函数将脏页先复制到内存中的double write buffer,之后通过doub...

InnoDB的一次更新事务是怎么实现的

此时,缓冲池中的数据被标记为”脏页”,表示与磁盘上的数据不一致。4. 写入Redo Log:为了保证事务的持久性,InnoDB在Buffer Pool中记录修改操作的同时,InnoDB会先将更新操作写入Redo Log(重做日志)。Redo Log是一种物理日志,记录了事务对数据库的修改操作。通过Redo Log,即使系统发生故障,也可以...

Mysql数据库InnoDB缓冲池(Buffer Pool)

尽管会突然增加类似备份或报表类的活动,但依然可以将频繁访问的数据保存在内存中。预期不久将需要某些数据页,则可以控制InnoDB将数据页预先异步读入缓冲池的时间和方式。可以控制后台进程何时将脏页刷出到磁盘,以及InnoDB是否基于工作负载动态调整刷出脏页的频率。可以配置InnoDB保留当前的缓冲池状态,以避免...

面试官:说说MySQL中的redo与undo

Redo Log 作用**:记录尚未完成的操作,当数据库崩溃时,利用redo log进行重做。组成**:Redo log由两部分组成,但具体内容略。工作流程**:InnoDB采用Write Ahead Log策略,即先写日志,再写入磁盘。当记录更新时,redo流程包括:在内存更新数据后,将更新后的记录写入redo log buffer,然后持久化到...

数据库技术中的脏数据是指 数据库脏数据怎么处理 数据库中什么叫读脏数据 数据库读脏数据怎么理解 数据库中脏读的定义是什么 数据库脏数据是指 数据库出现脏数据 数据库读脏数据 数据库脏读怎么解决
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
橱窗位淘宝橱窗 为什么女人说8023是什么意思? 惠普(HP)战66 AMD升级版15.6和荣耀MagicBook Pro 16.1。 高选哪个? 156寸和16寸笔记本大小差多少 女人常喝紫清茗韵西湖龙井的好处 常喝紫清茗韵西湖龙井可以减肥吗? 紫清茗韵西湖龙井的生长环境及产地 紫清茗韵西湖龙井茶如何划分等级 ...数字证书却显示本台电脑未安装数字证书,重新安装了还是老样子,该怎... ...数字证书却显示本台电脑未安装数字证书,重新安装了还是老样子,_百 ... mysql每秒查询结果数qps怎么得到 怎样查看 mysql buffer pool hit mysql 怎么统计innodb buffer pool命中率 怎么用ps做节日海报 PS如何快速制作节日海报? vivoS1Pro的蓝牙版本是多少? 请问vivos1pro有otg功能吗,如果没有,以后有没有可能通过更新系统获得呢? vivos1pro能更新安卓11吗 那个有vivos1原厂刷机包?? 我的笔记本能开机但是进不了桌面黑屏宏基电脑型号Z5WAH acer z5waw怎么恢复出厂设置 宏碁笔记本电脑由于非正常关机开机后显示正在准备自动修复,然后就一直黑屏怎么办?(型号为Z5WAH) 宏基笔记本Z5WAH有光驱吗 麦克风声音太小,win10系统,调整不来 宏基z5waw这个型号可以加装一个固态硬盘吗 ,拆开电脑看光驱那个位置的插口好像有点不太一样 宏基电脑z5wah刚装了Win10没多久,卡的很严重,用了1年左右,求解什么原因, win10怎么添加可以使用麦克风的程序 宏基笔记本电脑z5waw有没有光驱 宏基z5waw笔记本怎么设置u盘启动 你好 我想问一下宏碁笔记本电脑回收能卖多少钱,型号Z5waw 手机银行转账诈骗报警已止付,能追回吗? mysql+tps+一般为多少 我被诈骗了六万七千元人民币,已经报案立案了,银行止付了,但是钱被转走了,我这钱还能拿回来吗?_百度问一问 淘宝无线端的店铺名称怎么去掉或者修改? mysql tps 一般为多少 警方说已经帮我把诈骗分子的账户止付了,钱还能找回来吗? 止付后钱已转走怎么办 mysql中如何更改innodb_buffer_pool_size的值 被网络诈骗了,去报警时,发现其他警局已将转账账号止付了,钱可以找回来吗? 如果刚刚给别人打了电话,怎么才能不让他通过定位找到我手机位置? 为什么我oracle数据库的buffer命中率这么低? 为什么《王者荣耀》搜不到朋友战队? 王者荣耀如何搜索战队 怎样才能使mysql运行时性能不受设置的限制 mysql问题 InnoDB: Database was not shut down normally! 我想在拼多多上开一个网店,需要什么条件 贷款20万,年化利率7.6%,三年期,每月等额本息还款,有没有计算公式? 《王者荣耀》谁知道怎么看其他团队的战队? 王者荣耀怎么进好友战队 王者荣耀如何邀请好友加入战队?