Đây là một cái gì đó mà tôi làm. Nó không dẫn đến thời gian chết bằng 0 nhưng có thể kết thúc trong vòng chưa đầy một giây.
Tạo cơ sở dữ liệu chỉ có các phần tử giao diện với cơ sở dữ liệu thực của bạn. Trong trường hợp của tôi, nó chỉ chứa các định nghĩa về chế độ xem và tất cả các truy vấn của người dùng đều đi qua cơ sở dữ liệu này.
Tạo một cơ sở dữ liệu mới mỗi đêm. Khi hoàn tất, hãy cập nhật các định nghĩa dạng xem để tham chiếu đến cơ sở dữ liệu mới. Tôi khuyên bạn nên tắt quyền truy cập của người dùng vào cơ sở dữ liệu có chứa các chế độ xem trong khi bạn đang cập nhật chúng hoặc xóa tất cả các chế độ xem và tạo lại chúng - điều này ngăn cản quyền truy cập một phần vào cơ sở dữ liệu cũ. Vì việc tạo chế độ xem diễn ra nhanh chóng nên đây sẽ là một thao tác rất nhanh.
Chúng tôi làm tất cả những điều này thông qua một công việc. Trên thực tế, trước khi thay đổi chế độ xem sản xuất, chúng tôi kiểm tra việc tạo chế độ xem trên cơ sở dữ liệu khác để đảm bảo chúng đều hoạt động.
Rõ ràng, nếu bạn sử dụng alter view
thay vì yêu cầu sự nhất quán trên tất cả các chế độ xem, thì sẽ không có thời gian chết, chỉ là một khoảng thời gian ngắn không nhất quán.