Description:
mysql> select * from memory_by_thread_by_current_bytes limit 5;
+-----------+--------------------------+--------------------+-------------------+-------------------+-------------------+-----------------+
| thread_id | user | current_count_used | current_allocated | current_avg_alloc | current_max_alloc | total_allocated |
+-----------+--------------------------+--------------------+-------------------+-------------------+-------------------+-----------------+
| 819688 | sql/event_scheduler | 467670009 | 23.28 GiB | 53 bytes | 10.44 GiB | 1.02 TiB |
| 45 | innodb/clone_gtid_thread | 83231 | 1.33 GiB | 16.73 KiB | 1.30 GiB | 289.69 GiB |
| 36 | innodb/dict_stats_thread | 119139 | 39.99 MiB | 351 bytes | 39.99 MiB | 265.32 GiB |
| 65324832 | root@localhost | 99 | 1.10 MiB | 11.40 KiB | 862.33 KiB | 15.79 MiB |
| 1 | sql/main | 9994 | 1.03 MiB | 107 bytes | 312.08 KiB | 22.41 GiB |
+-----------+--------------------------+--------------------+-------------------+-------------------+-------------------+-----------------+
5 rows in set (0.12 sec)
How to repeat:
create database if not exists meta;
use meta;
create table my_heartbeat (
id int unsigned not null primary key,
master_ts varchar(26) NOT NULL,
update_by varchar(128) default NULL
);
create or replace view my_heartbeat_status_v as
select
master_ts,
now(6) as time_now,
unix_timestamp(now(6)) - unix_timestamp(master_ts) as slave_lag_seconds,
update_by
from my_heartbeat
;
insert into my_heartbeat (id, master_ts, update_by) values (1, NOW(6), 'init') on duplicate key update master_ts=NOW(6), update_by=VALUES(update_by);
#8.0
create event if not exists
update_heartbeat_event
on schedule every 1 second starts current_timestamp
on completion preserve
enable
do
insert into my_heartbeat (id, master_ts, update_by) values (1, NOW(6), 'event_scheduler') as hb on duplicate key update master_ts=NOW(6), update_by=hb.update_by;
Suggested fix:
prevent memory leak
Description: mysql> select * from memory_by_thread_by_current_bytes limit 5; +-----------+--------------------------+--------------------+-------------------+-------------------+-------------------+-----------------+ | thread_id | user | current_count_used | current_allocated | current_avg_alloc | current_max_alloc | total_allocated | +-----------+--------------------------+--------------------+-------------------+-------------------+-------------------+-----------------+ | 819688 | sql/event_scheduler | 467670009 | 23.28 GiB | 53 bytes | 10.44 GiB | 1.02 TiB | | 45 | innodb/clone_gtid_thread | 83231 | 1.33 GiB | 16.73 KiB | 1.30 GiB | 289.69 GiB | | 36 | innodb/dict_stats_thread | 119139 | 39.99 MiB | 351 bytes | 39.99 MiB | 265.32 GiB | | 65324832 | root@localhost | 99 | 1.10 MiB | 11.40 KiB | 862.33 KiB | 15.79 MiB | | 1 | sql/main | 9994 | 1.03 MiB | 107 bytes | 312.08 KiB | 22.41 GiB | +-----------+--------------------------+--------------------+-------------------+-------------------+-------------------+-----------------+ 5 rows in set (0.12 sec) How to repeat: create database if not exists meta; use meta; create table my_heartbeat ( id int unsigned not null primary key, master_ts varchar(26) NOT NULL, update_by varchar(128) default NULL ); create or replace view my_heartbeat_status_v as select master_ts, now(6) as time_now, unix_timestamp(now(6)) - unix_timestamp(master_ts) as slave_lag_seconds, update_by from my_heartbeat ; insert into my_heartbeat (id, master_ts, update_by) values (1, NOW(6), 'init') on duplicate key update master_ts=NOW(6), update_by=VALUES(update_by); #8.0 create event if not exists update_heartbeat_event on schedule every 1 second starts current_timestamp on completion preserve enable do insert into my_heartbeat (id, master_ts, update_by) values (1, NOW(6), 'event_scheduler') as hb on duplicate key update master_ts=NOW(6), update_by=hb.update_by; Suggested fix: prevent memory leak