ERROR 1206 (HY000): The total number of locks exceeds the lock table size

今天的大大告诉我一台MySQL大批量update报如下错误“MySQL error code 1206 (ER_LOCK_TABLE_FULL): The total number of locks exceeds the lock table size”
开始排查:
首先,查看max_write_lock_count
mysql> show global variables like 'max_write_lock_count';
+----------------------+----------------------+
| Variable_name        | Value                |
+----------------------+----------------------+
| max_write_lock_count | 18446744073709551615 |
+----------------------+----------------------+
1 row in set (0.00 sec)
这个值18446744073709551615足够大,应该不是报错主因
其次,查看innodb_buffer_poll_size
mysql> show global variables like 'innodb_buffer%'; 
+-------------------------+---------+
| Variable_name           | Value   |
+-------------------------+---------+
| innodb_buffer_pool_size | 8388608 |
+-------------------------+---------+
1 row in set (0.00 sec)
innodb_buffer_pool_size默认大小,8M


随即调整开发环境参数为2G
#vi /etc/my.cnf
[mysqld]
innodb_buffer_pool_size=2G

重启数据库,问题解决

问题原因总结:

InnoDB表执行大批量数据的DDL操作时会调用innodb_buffer_pool_size空间来处理数据,该值过小就会报错。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值