博客
关于我
mysql大批量删除(修改)The total number of locks exceeds the lock table size 错误的解决办法
阅读量:797 次
发布时间:2023-02-12

本文共 1036 字,大约阅读时间需要 3 分钟。

一、问题描述

在对大型数据库表进行批量更新或删除操作时,可能会遇到以下错误提示:

The total number of locks exceeds the lock table size

从字面上理解,这意味着当前操作所占用的锁的总数量已超过了数据库锁表的容量限制。

二、解决办法

针对上述问题,可以采取以下两种解决方案:

解决方案一:分批次进行更新或删除

为了避免一次性操作导致锁表资源不足,可以将批量操作分成多次执行。具体方法是使用LIMIT关键字限制每次操作的数据量。

例如,以下SQL语句可以一次性删除名为user的表中符合条件的前10,000行记录:

DELETE FROM user WHERE name LIKE '%zs%' LIMIT 10000;

每次操作处理10,000条记录,减少锁表占用的资源。

解决方案二:调整MySQL的InnoDB缓冲池大小

InnoDB缓冲池大小(innodb_buffer_pool_size)是InnoDB存储引擎默认配置中一个关键参数,用于控制物理内存中用于缓冲池的大小。默认情况下,MySQL 8.0的InnoDB缓冲池大小为128MB。为了支持更大规模的批量操作,可以通过以下方式调整缓冲池大小:

  • 临时设置

    如果需要快速测试可行性,可以通过命令临时更改缓冲池大小:

    SET GLOBAL innodb_buffer_pool_size = 2147483648;  # 将缓冲池大小调整为2GB

    该设置会在当前会话结束后失效。

  • 永久配置

    在生产环境中,建议将缓冲池大小设置为服务器内存的70%到80%。具体步骤如下:

    • 打开MySQL配置文件(通常位于/etc/my.cnf/etc/mysql/my.cnf)。

    • [innodb][mysql]标签下添加以下参数:

    innodb_buffer_pool_size = 2G  # 建议设置为服务器内存的70%-80%
    • 保存配置并重启MySQL服务。

    注意事项

    • innodb_buffer_pool_size必须是innodb_buffer_pool_chunk_sizeinnodb_buffer_pool_instances的整数倍。
    • innodb_buffer_pool_chunk_size定义了缓冲池大小调整的块大小。
    • 在生产环境中,建议根据实际服务器性能进行调整。
  • 三、参考文章

    (此部分无具体内容,建议根据实际需要补充相关参考资料或链接。)

    转载地址:http://sebfk.baihongyu.com/

    你可能感兴趣的文章
    Nacos 报Statement cancelled due to timeout or client request
    查看>>
    Nacos 注册服务源码分析
    查看>>
    Nacos 融合 Spring Cloud,成为注册配置中心
    查看>>
    Nacos-注册中心
    查看>>
    Nacos2.X 源码分析:为订阅方推送、服务健康检查、集群数据同步、grpc客户端服务端初始化
    查看>>
    Nacos2.X 配置中心源码分析:客户端如何拉取配置、服务端配置发布客户端监听机制
    查看>>
    Nacos2.X源码分析:服务注册、服务发现流程
    查看>>
    NacosClient客户端搭建,微服务注册进nacos
    查看>>
    Nacos中使用ribbon
    查看>>
    Nacos使用OpenFeign
    查看>>
    Nacos使用Ribbon
    查看>>
    Nacos做注册中心使用
    查看>>
    Nacos做配置中心使用
    查看>>
    Nacos入门过程的坑--获取不到配置的值
    查看>>
    Nacos原理
    查看>>
    Nacos发布0.5.0版本,轻松玩转动态 DNS 服务
    查看>>
    Nacos启动异常
    查看>>
    Nacos命名空间配置_每个人用各自自己的命名空间---SpringCloud Alibaba_若依微服务框架改造---工作笔记001
    查看>>
    Nacos和Zookeeper对比
    查看>>
    Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
    查看>>