Поскольку вы спрашивали о других базах данных, вот некоторая информация об Oracle.
Добавление столбца NULL в таблицу Oracle - это очень быстрая операция, поскольку она только обновляет словарь данных. Это держит эксклюзивный замок на столе в течение очень короткого периода времени. Однако он сделает недействительными любые хранимые процедуры, представления, триггеры и т. Д., Которые будут перекомпилированы автоматически.
Оттуда, если необходимо, вы можете создать индекс, используя предложение ONLINE. Опять же, только очень короткие словарные блокировки данных. Он будет читать всю таблицу в поисках объектов для индексации, но при этом никого не блокирует.
Если вам нужно добавить внешний ключ, вы можете сделать это и заставить Oracle доверять вам, что данные верны. В противном случае необходимо прочитать всю таблицу и проверить все значения, которые могут быть медленными (сначала создайте свой индекс).
Если вам нужно поместить значение по умолчанию или рассчитанное значение в каждую строку нового столбца, вам нужно будет выполнить масштабное обновление или, возможно, небольшую служебную программу, которая заполняет новые данные. Это может быть медленным, особенно если ряды становятся больше и больше не помещаются в свои блоки. Во время этого процесса можно управлять блокировкой. Поскольку старая версия вашего приложения, которая все еще работает, не знает об этом столбце, вам может потребоваться скрытый триггер или указать значение по умолчанию.
Оттуда вы можете переключаться на серверах приложений на новую версию кода, и она будет работать. Отпусти свой подлый триггер.
В качестве альтернативы, вы можете использовать DBMS_REDEFINITION, который представляет собой черный ящик, предназначенный для подобных вещей.
Все это так сложно проверять и т. Д., Что мы просто отключаемся рано утром в воскресенье, когда выпускаем основную версию.