Вот мой сценарий:
У меня есть простая хранимая процедура, которая удаляет определенный набор строк из таблицы (скажем, около 30 000 строк), а затем вставляет примерно такое же количество строк. Обычно это занимает всего несколько секунд; однако в таблице есть триггер, который отслеживает вставки / удаления и пытается имитировать то, что произошло со связанной таблицей на другом сервере.
Этот процесс, в свою очередь, является невероятно медленным из-за триггера, и таблица также блокируется во время этого процесса. Итак, вот мои два вопроса:
- Полагаю, что приличная часть замедления связана с журналом транзакций. Есть ли способ указать мне в моей хранимой процедуре, что я не хочу, чтобы то, что в процедуре, было зарегистрировано?
- Есть ли способ для меня выполнять команды «УДАЛИТЬ ИЗ» и «ВСТАВИТЬ В» без блокировки таблицы в течение всего процесса?
Спасибо!
edit - Спасибо за ответы; Я полагал, что это был случай (не имея возможности сделать что-либо из вышеперечисленного), но хотел убедиться. Триггер был создан очень давно и выглядит не очень эффективно, так что, похоже, мой следующий шаг - перейти к нему и выяснить, что нужно и как его можно улучшить. Спасибо!