Berikut adalah sesuatu yang saya lakukan. Ini tidak menghasilkan waktu henti nol tetapi dapat selesai dalam waktu kurang dari satu detik.
Buat database yang hanya memiliki elemen antarmuka ke database asli Anda. Dalam kasus saya, ini hanya berisi definisi tampilan, dan semua kueri pengguna melalui database ini.
Buat database baru setiap malam. Setelah selesai, perbarui definisi tampilan untuk merujuk ke database baru. Saya akan merekomendasikan untuk mematikan akses pengguna ke database yang berisi tampilan saat Anda memperbaruinya atau menghapus semua tampilan dan membuatnya kembali -- ini mencegah akses sebagian ke database lama. Karena membuat tampilan cepat, ini harus menjadi operasi yang sangat cepat.
Kami melakukan semua ini melalui pekerjaan. Sebenarnya, sebelum mengubah tampilan produksi, kami menguji pembuatan tampilan di database lain untuk memastikan semuanya berfungsi.
Jelas, jika Anda menggunakan alter view
daripada mengharuskan konsistensi di semua tampilan, maka tidak ada waktu henti, hanya periode inkonsistensi yang singkat.