Есть ли способ сообщить MS SQL, что запрос не слишком важен и что он может (и должен) занять свое время?
Также существует способ сообщить MS SQL, что он должен дать более высокий приоритет запросу?
Есть ли способ сообщить MS SQL, что запрос не слишком важен и что он может (и должен) занять свое время?
Также существует способ сообщить MS SQL, что он должен дать более высокий приоритет запросу?
Не в версиях ниже SQL 2008. В SQL Server 2008 есть регулятор ресурсов. Используя это, вы можете назначить логины для групп на основе свойств входа (имя пользователя, имя приложения и т.д.). Затем группы могут быть назначены пулам ресурсов и ограничениям или ограничениям i.t.o. ресурсы могут быть применены к этим пулам ресурсов.
В SQL Server еще нет регулятора ресурсов. Существует опция SET, называемая QUERY_GOVERNOR_COST_LIMIT, но это не совсем то, что вы ищете. И это предотвращает выполнение запросов на основе стоимости, а не контроля ресурсов.
Я не уверен, что это то, о чем вы просите, но у меня была ситуация, когда один пользовательский интерфейс добавлял 10 000 записей в очередь электронной почты (много данных в теле). В течение следующих нескольких дней вышло электронное письмо, поэтому ему не нужно было быть высокоприоритетным, на самом деле он будет болеть на сервере каждый раз, когда это происходит.
Я разделил процедуру на 10 000 индивидуальных вызовов, запустил процесс в пользовательском интерфейсе в другом потоке (настроен на низкий приоритет) и запустил его на секунду после запуска процедуры. Это заняло некоторое время, но я очень тщательно контролировал то, что он делал.
btw, это НЕ был спам, поэтому не плачьте, думая, что это так.