Karena Anda bertanya tentang database lain, berikut beberapa informasi tentang Oracle.
Menambahkan kolom NULL ke tabel Oracle adalah operasi yang sangat cepat karena hanya memperbarui kamus data. Ini memegang kunci eksklusif di atas meja untuk waktu yang sangat singkat. Namun, ini akan membatalkan semua prosedur yang disimpan depedan, tampilan, pemicu, dll. Ini akan dikompilasi ulang secara otomatis.
Dari sana jika perlu Anda dapat membuat indeks menggunakan klausa ONLINE. Sekali lagi, hanya kunci kamus data yang sangat pendek. Ini akan membaca seluruh tabel mencari hal-hal untuk diindeks, tetapi tidak memblokir siapa pun saat melakukan ini.
Jika Anda perlu menambahkan kunci asing, Anda dapat melakukannya dan membuat Oracle memercayai Anda bahwa datanya benar. Jika tidak, perlu membaca seluruh tabel dan memvalidasi semua nilai yang bisa lambat (buat indeks Anda terlebih dahulu).
Jika Anda perlu meletakkan nilai default atau yang dihitung ke dalam setiap baris kolom baru, Anda harus menjalankan pembaruan besar-besaran atau mungkin program utilitas kecil yang mengisi data baru. Ini bisa lambat, terutama jika baris menjadi jauh lebih besar dan tidak lagi muat di bloknya. Penguncian dapat dikelola selama proses ini. Karena versi lama aplikasi Anda, yang masih berjalan, tidak mengetahui tentang kolom ini, Anda mungkin memerlukan pemicu licik atau untuk menentukan default.
Dari sana, Anda dapat melakukan peralihan pada server aplikasi Anda ke versi kode yang baru dan itu akan terus berjalan. Jatuhkan pemicu licik Anda.
Alternatifnya, Anda dapat menggunakan DBMS_REDEFINITION yang merupakan kotak hitam yang dirancang untuk melakukan hal semacam ini.
Semua ini sangat merepotkan untuk diuji, dll sehingga kami hanya mengalami gangguan Minggu pagi setiap kali kami merilis versi mayor.