Обновление MySQL на огромной таблице - PullRequest
0 голосов
/ 25 января 2012

Я хочу обновить таблицу с 90 миллионами записей.

Например:

UPDATE huge_table set field3 = CONCAT_WS(' ', field1, field2)

Обновление блокирует таблицу на некоторое время, и я хочу минимизировать количество заблокированного времени.

Должен ли я заполнить временную таблицу для хранения значений, а затем назначить их из временной таблицы? Или я должен попытаться обновить в партиях по 1000? Возможно сочетание обоих.

Ответы [ 3 ]

1 голос
/ 25 января 2012

Я бы запустил обновление в пакетном режиме.

0 голосов
/ 25 января 2012

Ни то, ни другое. Вам нужно, чтобы обновление было максимально быстрым. Если вы создадите временную таблицу, то вы будете добавлять 90 миллионов вставок и удалений.

Рассмотрим разбиение таблицы. Смотри http://dev.mysql.com/doc/refman/5.5/en/partitioning-overview.html.

0 голосов
/ 25 января 2012

Вы должны выполнить такую ​​же загрузку в другой среде и вместо этого переназначить таблицу на новый набор данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...