Тайм-аут блокировки при создании индекса

Я знаю, что Вы сказали "R&D", но Вы также сказали "высоконадежный". Я подверг бы сомнению "сбережения" решения DIY по сравнению с покупкой стандартного механизма SAN, чтобы сделать это. Когда вещи идут не так, как надо с Вашим решением DIY, Вы собираетесь быть в незавидном положении наличия никого для контакта для справки. Чего время простоя стоит Вам в час? Можно съесть стоимость некоторого среднего уровневого механизма SAN довольно быстро в расходе времени простоя, игнорируя расход, связанный с прямой потерей данных.

Независимо от того, что Вы делаете о базовом диске, я не создал бы единственную файловую систему, настолько большую.

Повреждение файловой системы является реальной возможностью (проблема RAID-контроллера, ошибки ОС, и т.д.). В объеме, настолько большом, проверка файловой системы собирается взять навсегда. Я настоятельно рекомендовал бы использование нескольких объемов, которые могут быть логически объединены для появления как единственная файловая система (через различные средства - Вы не упоминали ОС, таким образом, я не могу дать Вам определенные идеи). Если у Вас будет некоторое повреждение файловой системы, то Вы потеряете часть логического тома, но Вы будете все еще бодрствовать.

Как пример: В мире Windows, выполняя CHKDSK на томе NTFS на 20 ТБ, заполненном файлами, будет МЕДЛЕННЫМ. В такой среде я создал бы несколько меньших томов NTFS и логически объединил бы их в единое пространство имен с DFS.

1
задан 15 December 2009 в 18:32
1 ответ

Можно увеличить тайм-аут блокировки с InnoDB:

Отредактируйте/etc/my.cnf или/etc/mysql/my.cnf (предполагающий, что Вашей dev машиной является Linux/Unix),

Некомментарий (или добавляют), строка:

innodb_lock_wait_timeout = 50

И измените настройки к большему числу, скажите 300. Это находится в секундах.

Перезапустите mysql и повторно выполните Ваш запрос.

С другой стороны, можно вывести данные, отбросить таблицу, воссоздать его с индексом и возвратить данные в. Или Вы могли составить новую таблицу с индексом и выбрать данные старой таблицы в новую таблицу. В обоих этих случаях можно повредить импорт/копию данных в мелкие кусочки (чтение: транзакции), который не превысит тайм-аут.

3
ответ дан 3 December 2019 в 19:53
  • 1
    Прекрасный, спасибо за это. Согласно innodb документам можно также изменить тайм-аут с СЕССИЕЙ НАБОРА или УСТАНОВИТЬ ГЛОБАЛЬНЫЕ команды, иметь для попытки этого для сохранения перезапуска сервера в будущем. –  Neil Aitken 16 December 2009 в 11:55

Теги

Похожие вопросы