gpt4 book ai didi

mysql - 如何处理 "InnoDB: page_cleaner: 1000ms intended loop took 0ms"?

转载 作者:行者123 更新时间:2023-11-29 01:52:35 27 4
gpt4 key购买 nike

今天我在我的 mysql-error-log 中偶然发现了这些行:

2016-05-30T04:50:45.522853Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 1000ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)
2016-05-30T04:50:47.523024Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 0ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)
...

...最后一行以大约 0.5 毫秒的间隔重复大约 1000 次。

当这条消息出现时,mysql 用户应该做什么?

在 Internet 上搜索“1000 毫秒预期循环耗时 0 毫秒”得到零结果。 Google 提倡不带引号的搜索,但这会产生完全相反的结果 - 其中“预期循环” - 无论这可能是什么 - 花费了非常长的时间(数千到十分之一毫秒)。

嗯,准确地说:我说的数据库有一个 innodb 格式的表,其余的在 myisam 中——这是有充分理由的(读比写多一千倍)。我最想知道的是:为什么这个服务器会提示 innodb 周围的任何东西?因为唯一的一张 innodb 格式的表甚至还没有使用——除了我自己做的一些罕见的实验。但后者不可能是日志条目的原因,因为我在一个多小时后开始了我的工作日。

所以问题仍然存在:mysql 服务器提示甚至没有使用过的 innodb 数据库的原因可能是什么?有一千条错误消息?

最佳答案

我们在各种客户端上遇到了同样的问题,发现问题是由于将 innodb_lru_scan_depth 的值从默认值 1024 设置为低至 128。尽管降低该值可以减少处理事务所花费的时间,尤其是在写绑定(bind)工作负载我认为将值设置得太低会使缓冲池无法跟上清除其某些缓冲区和缓冲池脏页的速度。

在我们的例子中,我们已经看到通过将值从 128 增加到 256 的显着改进,但正确的值取决于硬件和负载类型。诀窍是在提高 OLTP 性能和让 MySQL 保持缓冲池清洁之间找到正确的值,而不是让 page_cleaner 需要做很多工作,如上面的消息所述:

"InnoDB: page_cleaner: 1000ms intended loop took *****ms"

可以在不重新启动 MySQL 的情况下动态更改该值

设置全局 innodb_lru_scan_depth=256;

关于mysql - 如何处理 "InnoDB: page_cleaner: 1000ms intended loop took 0ms"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37520957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com