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才生效。