Mysql: разумно прогнозировать продолжительность добавления столбца или индекса - PullRequest
2 голосов
/ 25 января 2012

Я понимаю, что этот вопрос не из тех, в которых я собираюсь получить точный ответ. Я иду за фигурами в парке.

Мне в основном нужен способ ответить на этот вопрос: когда я добавляю этот столбец или индекс, собирается ли он заблокировать таблицу на 1 минуту, 10 минут или и + часа? Причина в том, что нам нужно знать, потребует ли это внедрение, чтобы мы уведомляли клиентов о перерыве в обслуживании или можем ли мы сделать это в часы пик.

Я понимаю, что есть много факторов, связанных с таким вопросом, но я бы хотел сосредоточиться на тех, которые не очевидны, таких как производительность машины, текущая загрузка системы и т. Д.

В идеале какой-то формал, например:

(Number of Rows) * (0.01 Secs) * (Some unknown factors) = 112.secs

Также существует ли существенная разница между добавлением индекса в столбец? А как насчет различных типов добавляемых столбцов?

Иными словами, каковы основные факторы, определяющие, будет ли оператор alter медленным или очень медленным?

1 Ответ

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

Наилучшим подходом здесь является создание промежуточной копии базы данных на аналогичном оборудовании с тем же набором данных, идеально сгенерированным из ночных резервных копий.

Тогда вы можете попробовать свои модификации схемы без страха и получить хорошее примерное представление о том, сколько времени это займет. Конечно, база данных под нагрузкой займет больше времени, чем та, которой нет. Чтобы учесть это, вы можете запустить несколько сценариев нагрузочного тестирования для промежуточной базы данных, которые запускают обычные операции приложения при испытаниях изменений схемы.

...