mysql 内存一直增长(memory/sql/thd::main_mem_root)

mysql版本

8.0.14

发现过程

查询总内存

SELECT t.EVENT_NAME, t.CURRENT_NUMBER_OF_BYTES_USED FROM performance_schema.memory_summary_global_by_event_name t ORDER BY t.CURRENT_NUMBER_OF_BYTES_USED DESC;

前:

memory/sql/thd::main_mem_root          1413902359

后:

memory/sql/thd::main_mem_root           7086169312

其它事件内存无明显增长,线程占用大部分内存

继续排查,查看线程内存使用

SELECT * FROM sys.`memory_by_thread_by_current_bytes`

sql/event_scheduler 占用了太多内存,连接线程内存使用都很正常,所以事件可能有内存泄露(监控内存一段时间一直在增长)

处理

面向百度发现同样问题,也没说修复
https://bugs.mysql.com/bug.php?id=107741

我的建议是如果不好停止事件,那么可以写个定时任务,关闭事件再打开,可以释放内存。当然也可以看看后续版本有没有修复记录

set global event_scheduler=OFF; 

其它

面向百度的时候发现个bug,就是范围查询可能会内存溢出
参考,https://bugs.mysql.com/bug.php?id=105331
官方是说在8.0.29修复了
在这里插入图片描述
查看官方记录
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-29.html#mysqld-8-0-29-bug

The constructor used the main thread memory root for allocating keys, rather than the same memory root as used for allocating the object itself. This resulted in unexpectedly high memory usage when executing multiple queries using a range check for the query plan. (Bug #105331, Bug #33516707)QUICK_RANGEQUICK_RANGE

References: See also: Bug #28805105, Bug #28857990.
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值