begin tran
create table #tb (idx int not null identity(1,1), strData varchar(8000))
declare @i int
set @i=0
while(@i<80000)
begin
insert into #tbvalues('어버버버버법버버)
set @i = @i+1
end
drop table #tb
rollback tran
----------------------------------------------
설명을 드리자면 가상 테이블 하나를 만들어 미친듯이 데이터를 넣었습니다.
당연히 디비서버 메모리는 쭉~ 올라갑니다.
그리고 해당 테이블을 드랍시키고 롤백까지 시켰습니다.
하지만 디비서버 메모리는 절대 감소하지 않고 그대로입니다.
어떻게 하면 메모리를 원래대로 돌릴 수 있을까요?
Comment 4
-
항해자™
2013.02.25 23:42
-
차태욱
2013.02.25 23:49
이미 SQL Server 에서 할당한 메모리를 다시 여유 메모리로 돌려 놓는 간단한 방법으로는....
1.SQL Server 에서 메모리를 사용 할 만큼만 MAX Server Memory 로 설정하시거나,
(2008 버전이라고 하셨으니.. http://www.sqler.com/337273 이 링크를 참조하시거나,
SQL Server 운영과튜닝 책의 설치 파트 보시면 도움이 많이 되실 겁니다 ^^
)
2.SQL Server 의 인스턴스를 재시작 (Services.msc 혹은 SqlServerManager10.msc (2008이라 하셨으니..) 혹은 재부팅)
하시는 방법이 있습니다.
-
쓸만한게없네(윤선식)
2013.02.26 09:29
그림 투척.
-
버뮤다삼각김밥
2013.02.26 10:15
답변 감사합니다.
MSSQL 2008에서는 Min, Max 메모리를 지정할 수 있습니다.
최초 실행시 별도의 flag를 지정하지 않으면 SQL Server는 필요할 때 마다 메모리를 할당해서 Max에 도달 할 때까지 늘려갑니다.
그리고 한번 먹은건 계속 가지고 있습니다. Max 이상은 올라가지 않습니다.