#sql #debugging #stored-procedures
Вопрос:
По какой-то причине у этого скрипта происходит массовая утечка оперативной памяти. Я не могу на самом деле отлаживать сценарий, потому что по какой-то причине он использует все пространство оперативной памяти моей системы и не очищает себя от используемой памяти даже после использования различных хранимых процедур.
Кроме того, я отлаживал все, что мог, и заметил, что даже простые функции удаления используют и никогда не выпускают до 20-100 МБ на функцию удаления.
delete
t2
from
MsSubSpecArchiveToDeleteWS TMP
inner join
MsWorkSectionSpecVersion t1 on TMP.MsWorkSectionSpecGUID = t1.MsWorkSectionSpecGUID
inner join
MsSubSpecVersionMsWorkSectionSpecVersion t2 on t1.MsWorkSectionSpecVersionGUID = t2.MsWorkSectionSpecVersionGUID
Приведенная выше функция, например, выполняется несколько сотен раз рекурсивно на протяжении всего сценария (простое удаление) и каждый раз занимает 20-100 МБ оперативной памяти. Это очень быстро накапливается, и вся хранимая процедура при каждом запуске занимает 2 ГБ оперативной памяти и быстро приводит к сбою моей системы, когда у сценария в конечном итоге заканчивается память.
Вся система очень старая (построена в 2012 году, сокращена и отредактирована очень по-разному за последние 9 лет).
Я отлаживаю в Visual Studio, и мне интересно, есть ли способ увидеть, что именно вызывает эти утечки памяти, и, надеюсь, подключить их.