Mysql he total number of locks exceeds the lock table size

 Mysql写了一个存储过程,每隔30分钟字段将2个日志表的数据汇总插入到另一个表。其中用到Mysql的(REPLACE INTO  插入的表  SELECT 数据源 ), 执行时因数据量过大,导致发生以下错误:

 

 

解决方式:

1.执行以下命令:

  show variables like "%_buffer%";

  显示结果:

  

 

 

 2. 找到上图中的:innodb_buffer_pool_size=8388608 ,默认8M,需要将其设置为1G=1*1024*1024*1024。

  输入如下命令:

SET GLOBAL innodb_buffer_pool_size=1073741824;

设置后返回结果:

设置要根据自己的实际情况来设置,如果设置的值不在合理的范围内,并不是设置越大越好,可能设置的数值太大体现不出优化效果反而造成系统的swap空间被占用,导致操作系统变慢,降低sql查询性能。

3. MySQL5.7及以后版本,改参数时动态的,修改后,无需重启MySQL,但是低版本,静态的,修改后,需要重启MySQL才生效。

 

posted on 2021-12-20 15:29  Msea  阅读(110)  评论(0编辑  收藏  举报

导航