Mysql查询报错:The total number of locks exceeds the lock table size

  1. 为何会出现这种错误

这是由于innodb_buffer_pool_size过小导致的。在MySQL5.5之前,广泛使用的和默认的存储引擎是MyISAM,MyISAM使用操作系统缓存来缓存数据,InnoDB需要innodb buffer pool中处理缓存,当InnoDB表执行大批量数据的增删改查时,就需要有足够的innodb buffer pool 空间。

  1. 如何设置缓冲池大小

innodb_buffer_pool_size默认大小为8388608(即8M ∗ \ast 1024 ∗ \ast 1024),最大值取决于CPU的架构,在32-bit的平台上,最大值为2^32-1, 在64-bit的平台上最大值为2^64-1。当缓冲池大小大于1G时,设置innnodb_buffer_pool_instances的值大于1可以提高服务器的可扩展性。

缓冲池大小必须始终等于或是innodb_buffer_pool_chunk_size *innodb_buffer_pool_instances的倍数,若不符合条件,则缓冲池大小将自动调整。

  1. 配置示例

(1). 查询缓冲池大小

进入Mysql命令行,输入show variables like “innodb_buffer_pool%”;
显示如下:
在这里插入图片描述

这里缓冲池大小默认是8M(8 ∗ \ast 1024 ∗ \ast 1024 = 8388608),刚好等于innodb_buffer_pool_instances ∗ \ast innodb_buffer_pool_chunk_size的积。

(2). 修改缓冲池大小

下面将缓冲池大小设为1G(1 ∗ \ast 1024 ∗ \ast 1024 ∗ \ast 1024 = 1073741824),而1G是innodb_buffer_pool_instances ∗ \ast innodb_buffer_pool_chunk_size的积的倍数,所以1G是有效的size值。
命令行输入set global innodb_buffer_pool_size=1073741824;
在这里插入图片描述

(3). 重启服务
切记,一定要重启mysql服务修改才能生效。
退出mysql命令行:exit
在这里插入图片描述
重启mysql服务:net restart mysql

在这里插入图片描述

问题解决!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值