UPDATE query in MySQL on large table

1.6k views Asked by At

I have a MySQL database with 21M records and I'm trying to do an update on about 1M records but the query fails with ERROR 1206 (HY000): The total number of locks exceeds the lock table size.

Is it possible to update the table without acquiring locks?

I don't have access to change MySQL configuration parameters like innodb_buffer_pool_size. Is there a different way to achieve the same?

Thanks

EDIT:

  1. I've tried it in batches of 5000, it works a few times, but I get the same error
  2. I've tried LOCK TABLES to lock the entire table and still it doesn't work.
2

There are 2 answers

2
Faisal Feroz On BEST ANSWER

I think you can use the limit clause to do the updates in batches.

0
anothershrubery On

Try locking at table level rather than row level. Use LOCK TABLES MyTable WRITE. This might solve the problem. No guarantees though! Don't forget to unlock the tables either!