mysql中插入语句过多,导致遇到The total number of locks exceeds the lock table size错误的问题...

在Linux环境下,mysql插入语句过多而导致报错问题。The total number of locks exceeds the lock table size百度翻译以后是:锁的总数超过了锁表的大小。网上查了查以后找到的解决方案是:

InnoDB表执行大批量数据的更新,插入,删除操作时会出现这个问题,需要调整InnoDB全局的innodb_buffer_pool_size的值来解决这个问题,并且重启mysql服务。

进入mysql命令

show variables like "%_buffer%";(不要忘记带;号,没有;号表示一条语句没有结束)

默认的innodb_buffer_pool_size=8M

示的格式是 1M*1024*1024,设置的时候也要这样设置,例如

修改 innodb_buffer_pool_size的值为3G:

SET GLOBAL innodb_buffer_pool_size=67108864;(3*1024*1024*1024,不要忘记;号)

但是我查了我的innodb_buffer_pool_size以后发现我的好像完全足够。并且和另一个库一样的。另外一个可以跑过去。

              

然后去请教了我们组的大佬。然后说明情况以后他发现是因为服务器缓存的数据量太大,导致缓存不够锁表。具体我网上查了下命令
mysql查看被锁住的表

  • 查询是否锁表

    show OPEN TABLES where In_use > 0;

  • 查看所有进程

 MySQL:

  show processlist;

mariabd:

  show full processlist;

查询到相对应的进程===然后 kill id

  • 杀掉指定mysql连接的进程号
    kill $pid
  • 查看正在锁的事务
    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; 
  • 查看等待锁的事务
    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; 

删除了多余的不知道谁建的一个库以后。然后解决这个问题,所以具体问题还是要具体对待滴。

 

转载于:https://www.cnblogs.com/xiaodangxiansheng/p/11132174.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值