Могут ли невыбранные временные таблицы привести к потере памяти в SQL Server? - PullRequest
0 голосов
/ 06 апреля 2011

Скажем, у нас есть плохо написанный SQL, который не освобождает временные таблицы после завершения, или хорошо написанный SQL, который убивается после он создает временные таблицы, но до отбрасывает их.1005 *

Может ли это привести к тому, что экземпляр SQL Server будет занимать много памяти и не будет освобождать ее?Как бы мне вернуть эту память?

1 Ответ

4 голосов
/ 06 апреля 2011

временная таблица будет удалена после того, как она выйдет из области видимости ... и я говорю здесь о локальной временной таблице, а не о глобальной (с двумя знаками фунта)

SQL Server всегда будет засасыватьмного памяти, он поместит в кеш как можно больше данных, получение данных из ОЗУ в 1000 раз быстрее, чем получение данных с диска

Запустите это в SSMS

CREATE TABLE #MyTemp(id INT)
GO
SELECT * FROM tempdb.sys.tables
WHERE name LIKE '#MyTemp%'

Теперь закройтеэто окно в SSMS

запустить его в другом окне

SELECT * FROM tempdb.sys.tables
WHERE name LIKE '#MyTemp%'

Таблица все еще там?

Если таблица создана в процедуре, ее нет, когдапроцесс сделан

CREATE PROCEDURE prtestTemp
AS 
CREATE TABLE #temp(id INT)

SELECT * FROM tempdb.sys.tables
WHERE name LIKE '#Temp%'

GO

Запустить процесс

EXEC prtestTemp

Теперь запустите это, таблицы там нет

SELECT * FROM #temp

SELECT * FROM tempdb.sys.tables
WHERE name LIKE '#Temp%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...