У меня есть хранимая процедура, которая занимает слишком много ресурсов сервера. Я хочу ограничить этот запрос, чтобы он использовал не более, скажем, 10% ресурсов. Я слышал о регуляторе ресурсов, но он доступен только для предприятий. и версии для разработчиков. У меня стандартное издание. Есть ли другие альтернативы этому, кроме покупки лучшей версии сервера sql?
SQL-сервер ограничивает ресурсы для хранимой процедуры
Ответы (2)
Дайте определение «ресурсам». ИО? ПРОЦЕССОР? Память? Сеть? Раздор? Размер журнала? временная база данных? И вы не можете ответить «все». Вам необходимо указать, какие ресурсы сейчас потребляются процедурой.
Ваш вопрос слишком общий, чтобы на него можно было ответить. Не существует универсального механизма для ограничения «ресурсов» для запроса или процедуры, даже регулятор ресурсов ограничивает только некоторые ресурсы. Вы описываете свою проблему как манипулирование большими объемами данных в течение длительного периода времени, например, десятки тысяч вставок обновлений по всей базе данных, что указывает на необходимость пакетной обработки. Если процедура действительно делает то, что вы описываете, то регулирование ее выполнения, вероятно, не то, что вам нужно, потому что вы хотите уменьшить продолжительность транзакций (пакетов), а не увеличить ее.
И прежде всего: анализировали ли вы процедуру как потребление ресурсов процедурой как проблему производительности, используя такую методологию, как Ожидание и очереди? Только после того, как вы это сделаете и процедура будет работать оптимально (т. е. она будет потреблять наименьшее количество ресурсов, необходимых для выполнения своей работы), вы можете рассмотреть вопрос о регулировании процедуры (и, скорее всего, к тому времени необходимость< /em> дроссель волшебным образом исчез).
Вы можете использовать подсказку запроса MAXDOP
, чтобы ограничить количество процессоров, которые может использовать данный запрос. За исключением высококлассных наворотов, о которых вы упомянули, я не думаю, что есть что-то, что позволяет вам накладывать ограничения на уровне одного процесса на выделение памяти или использование диска.