如何解决由触发器导致mysql内存溢出问题
小编为大家解答如何解决由触发器导致mysql内存溢出问题的IT知识,一起来了解了解吧。
1、问题现象
一台从库服务器的内存使用率持续上升,最终导致 MySQL 服务被 kill 了。
内存监控视图如下:
从图中可以看出,在 00:00 左右触发了 kill,然后又被mysqld_safe进程拉起,然后内存又会持续上升。
2、排查过程
基本信息
- 数据库版本:MySQL 5.7.32
- 操作系统版本:Ubuntu 20.04
- 主机配置:8C64GB
innodb_buffer_pool_size
:8G
innodb_buffer_pool_size
:8G由于用户环境未打开内存相关的监控,所以在my.cnf
配置文件中配置如下:
performance-schema-instrument = 'memory/% = COUNTED'
打开内存监控等待运行一段时间后,相关视图查询如下:
从上述截图可以看到,MySQL 的buffer pool大小分配正常,但是memory/sql/sp_head::main_mem_root占用了 8GB 内存。
查看源代码的介绍: