У меня довольно простая команда, которую я иногда работать:Быстрая, Atomic Таблица Замена
BEGIN TRAN T1;
truncate table mytable
insert into mytable select name from myview
COMMIT TRAN T1;
Эта команда имеет два некрасивых побочных эффектов: во-первых, выберите запросов на MyTable часто тайм-аут. Во-вторых, выбор запросов на mytable иногда не возвращает результатов. Меня не волнует, вернет ли он результаты предварительной транзакции или результаты после транзакции, но не хочет, чтобы они возвращали что-либо посередине или время ожидания. Одно из решений, о котором я думал и которое почти наверняка поможет, - это сначала скопировать представление в временную таблицу (так как представление немного дороже). Это не полностью решает проблему, но почти наверняка сделает окно достаточно узким, чтобы проблема была проигнорирована. Честно говоря, окно достаточно узкое, чтобы игнорировать его сейчас, но я не люблю игнорировать его. Другим решением, которое является примером безумной надстройки, было бы заменить таблицу двумя таблицами (например, двойным буфером) и вызвать новейшую, правильно заполненную таблицу.
Есть ли более элегантный способ заменить стол на новый?
Какой уровень изоляции транзакций вы используете? – mwigdahl
Я не знаю, как установить его или что я использую. – Brian