【问题标题】:UPDATE query in MySQL on large table在 MySQL 中对大表进行 UPDATE 查询
【发布时间】:2011-06-20 01:16:14
【问题描述】:

我有一个包含 21M 条记录的 MySQL 数据库,我正在尝试更新大约 1M 条记录,但查询失败并显示 ERROR 1206 (HY000): The total number of locks exceeds the lock table size.

是否可以在不获取锁的情况下更新表?

我无权更改 innodb_buffer_pool_size 等 MySQL 配置参数。有没有不同的方法来达到同样的效果?

谢谢

编辑

  1. 我已经分批尝试了 5000 个,它工作了几次,但我得到了同样的错误
  2. 我已尝试 LOCK TABLES 锁定整个表,但仍然无法正常工作。

【问题讨论】:

标签: mysql table-locking large-data


【解决方案1】:

我认为您可以使用limit 子句进行批量更新。

【讨论】:

  • 我已经分批尝试了 5000 个,它工作了几次,但我得到了同样的错误
  • 那么也许尝试更小的块? :)
【解决方案2】:

尝试在表级别而不是行级别锁定。使用LOCK TABLES MyTable WRITE。这可能会解决问题。虽然没有保证!也不要忘记解锁桌子!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-31
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多