Оскільки ви запитували про інші бази даних, ось деякі відомості про Oracle.
Додавання стовпця NULL до таблиці Oracle - це дуже швидка операція, оскільки вона лише оновлює словник даних. Це тримає ексклюзивний замок на столі на дуже короткий проміжок часу. Однак це призведе до недійсності будь-яких збережених процедур, поглядів, тригерів тощо. Вони будуть перекомпільовані автоматично.
Звідти при необхідності можна створити індекс за допомогою пункту ONLINE. Знову ж таки, лише дуже короткі словники блокуються. Він прочитає всю таблицю, шукаючи речі для індексації, але нікого не блокує, роблячи це.
Якщо вам потрібно додати іноземний ключ, ви можете зробити це і змусити Oracle довіряти вам, що дані є правильними. В іншому випадку потрібно прочитати всю таблицю і перевірити всі значення, які можуть бути повільними (спершу створіть свій індекс).
Якщо вам потрібно ввести значення за замовчуванням або обчислене значення в кожен рядок нового стовпця, вам потрібно буде запустити масове оновлення або, можливо, трохи корисну програму, яка заповнює нові дані. Це може бути повільним, особливо якщо рядки стають набагато більшими і більше не поміщаються в їхні блоки. Блокуванням можна керувати під час цього процесу. Оскільки старий версино вашої програми, який все ще працює, не знає про цей стовпець, вам може знадобитися підлий тригер або вказати за замовчуванням.
Звідти ви можете зробити перехід на своїх серверах додатків до нової версії коду, і він буде продовжувати працювати. Скинь свій підлий курок.
Крім того, ви можете використовувати DBMS_REDEFINITION, який являє собою чорну скриньку, розроблену для цього.
Все це настільки турбує тестування тощо, що у нас просто виникає ранній недільний ранок, коли ми випускаємо основну версію.