MySQL在大表上的UPDATE查询

时间:2011-02-02 15:14:10

标签: mysql table-locking large-data

我有一个包含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锁定整个表格,但它仍无效。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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