实验环境
window10专业版&&MySQL8.0
问题背景
课程项目中使用MySQL做新指标构建时需要用到等值连接查询,并将结果存在新表中;
数据量较大(32,320,079条)情况下运行时出现ERROR 1206 (HY000): The total number of locks exceeds the lock table size。
代码
/*time即我们要生成的新表
productid和orderhour都是独有的,所以不用加前缀*/
create table time
select orderp.orderid,productid,orderhour
from orderp,ordert
where orderp.orderid=ordert.orderid;
出现的问题
数据量过大时会报错ERROR 1206 (HY000): The total number of locks exceeds the lock table size
先查询innodb_buffer_pool_size的值
show variables like '%buffer%'
可以看到innodb_buffer_pool_size默认为8M,需要改大。
进入C:\ProgramData\MySQL\MySQL Server 8.0目录修改my.ini文件(管理员模式打开),找到innodb_buffer_pool_size,将默认值改为64M.
重新启动MySQL服务(在任务管理器中),再次试验后成功