zoukankan      html  css  js  c++  java
  • 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; 

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

     

  • 相关阅读:
    新浪视频播放器站外调用代码
    豆瓣FLASHMP3播放器
    奇艺 代码
    优酷新版播放器站外调用代码详解
    优酷网视频播放器站外调用详解
    PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
    给你的博客添加个看电影的频道
    fwrite(),fread()命令混用问题(有图有真相)
    PHP字符编码问题之GB2312 VS UTF8
    POJ 1637 Sightseeing tour
  • 原文地址:https://www.cnblogs.com/xiaodangxiansheng/p/11132174.html
Copyright © 2011-2022 走看看