MYSQL解决 The total number of locks exceeds the lock table size 问题

当我们对Mysql 中的表进行大批量的分组,查询、 创建的时候经常会出现这个问题,他翻译过来大概是这个意思,总数已经超过锁定表的大小。一般出现这个原因会有两种可能:

1.MySQL的临时表过小也就是tmp_table_size

tmp_table_size:它规定了内部内存临时表的最大值,每个线程都要分配。(实际起限制作用的是tmp_table_size和max_heap_table_size的最小值。)如果内存临时表超出了限制,MySQL就会自动地把它转化为基于磁盘的MyISAM表,存储在指定的tmpdir目录下,默认如下图:

那么怎么改变临时表的大小呢?同样有两种方法

第一种是 使用命令行进行修改

先使用 show variables like "%tmp%";查看临时表的大小,我的是64M

然后使用SET GLOBAL  tmp_table_size =1024*1024*1024;我是给了1个G

第一种重启电脑后默认的设置会还原,适合临时使用一次的用户。或者我没有找到怎么设置永久的方法,如果有小伙伴们发现请告诉我哦,

第二种是修改mysql 的配置文件

1.关闭mysql 服务,方式是我的电脑——》管理->服务-》找到mysql的服务选择关闭。

2.找到mysql 的配置文件的位置,在前面的章节中我已经详细的介绍了这么找到Linux或者windows配置文件链接如下:

https://blog.csdn.net/dingweiye123/article/details/80991341

3.注意配置文件要备份然后找到 tmp_table_size直接修改成tmp_table_size=3G

4.重启服务

2.MySQL的innod缓冲池过小也就是innodb_buffer_pool_size

和修改tmp_table_size的大小一样分为两种办法

1.mysql命令行设置

show variables like "%_buffer%";查看大小

使用SET GLOBAL innodb_buffer_pool_size=67108864;(3*1024*1024*1024,不要忘记;号)设置如下

第二种一样是修改配置文件

1.关闭mysql 服务,方式是我的电脑——》管理->服务-》找到mysql的服务选择关闭。

2.找到mysql 的配置文件的位置,在前面的章节中我已经详细的介绍了这么找到Linux或者windows配置文件链接如下:

https://blog.csdn.net/dingweiye123/article/details/80991341

3.修改 innodb_buffer_pool_size的值 innodb_buffer_pool_size=3G

4.重启服务

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值