2011-02-02 3 views
5

У меня есть база данных MySQL с 21m записей и я пытаюсь сделать обновление на около 1 млн записей, но запрос не с ERROR 1206 (HY000): The total number of locks exceeds the lock table size.UPDATE запрос в MySQL на большом столе

Можно ли обновить таблицу без приобретения замки?

У меня нет доступа к изменению параметров конфигурации MySQL, таких как innodb_buffer_pool_size. Есть ли другой способ добиться того же?

Благодаря

EDIT:

  1. Я пробовал его в партиях от 5000, он работает в несколько раз, но я получаю ту же ошибку
  2. Я попытался LOCK TABLES для блокировки всей таблицы, и все же она не работает.
+0

http://rackerhacker.com/2010/02/16/mysql-the-total-number-of-locks-exceeds-the-lock-table-size-2/ –

+0

делать это только в кусках, таких как faisal –

+0

Какое глупое ограничение. Кто-нибудь знает о работе? Я предполагаю использовать MyISAM? – chmullig

ответ

3

Я думаю, вы можете использовать предложение limit, чтобы делать обновления в партиях.

+0

Я пробовал его в партиях 5000, он работает несколько раз, но я получаю ту же ошибку – rampr

+0

Тогда, возможно, попробуйте более мелкие куски? :) – gnur

1

Попробуйте заблокировать уровень стола, а не уровень строки. Используйте LOCK TABLES MyTable WRITE. Это может решить проблему. Никаких гарантий! Не забудьте также разблокировать таблицы!