场景
在运算电商大数据时候报错,如图:
原因
当我们对MySQL中的表进行大批量的分组,查询、 创建的时候经常会出现这个问题。翻译过来大概是这个意思,总数已经超过锁定表的大小。
一般出现这个原因会有两种可能:
- MySQL的临时表过小也就是tmp_table_size
- MySQL的innod缓冲池过小也就是innodb_buffer_pool_size
解决:
1. 临时修改
- MySQL的临时表过小也就是tmp_table_size
先使用 SHOW VARIABLES LIKE '%tmp%';
查看临时表的大小,我的是32M
然后使用SET GLOBAL tmp_table_size =102410241024;我是给了1个G
- MySQL的innod缓冲池过小也就是innodb_buffer_pool_size
SHOW VARIABLES LIKE '%_buffer%';
查看大小
使用 SET GLOBAL innodb_buffer_pool_size=67108864;
(310241024*1024)设置
2. 永久修改
my.ini 配置文件修改
innodb_buffer_pool_size=512M
tmp_table_size=512M
重启服务