<원인>

Table의 Field 내용이 80% 이상 변경 되면 통계업데이트가 Update 되도록 "자동" 설정이 되어 있음

최악의 경우 User가 많이 접속을 하여 Insert,Update 등이 많이 발생하는 시간에 통계 업데이트를 수행하게 되어

Lock을 발생하게 됨(사용자가 적을때는 통계업데이트를 하지 않다가 사용자가 많이 들어나게 되면 통계업데이트를

한다고 Lock이 발생하게 되는 사항이 발생함)

<SQL문>

통계업데이트를 자동에서 수동으로 변경후 사용량이 적은 새벽 및 공휴일 시간에 수행


CREATE TABLE #tmp (tablename varchar(255),indexname varchar(255) null ,autostats varchar(255) null,lastupdate datetime)

declare @tablename varchar(255)
declare @indexName varchar(255)

DECLARE c1 CURSOR READ_ONLY
FOR
select name From dbo.sysobjects WHERE xType = 'U'

OPEN c1

FETCH NEXT FROM c1 INTO @tablename
WHILE (@@fetch_status =0)
BEGIN

insert into #tmp (indexname,autostats,lastupdate)
execute ('EXEC sp_autostats ' +@tablename )

update #tmp
set tablename = @tablename
from #tmp where tablename is null

FETCH NEXT FROM c1 INTO @tablename
END

DEALLOCATE c1

 

DECLARE c2 CURSOR READ_ONLY
FOR
select tablename,indexname From #tmp order by tablename asc

OPEN c2

FETCH NEXT FROM c2 INTO @tablename ,@indexName
WHILE (@@fetch_status =0)
BEGIN
execute ('UPDATE STATISTICS ' +@tablename + ' '+ @indexName +' with NORECOMPUTE ' ) -- 통계업데이트를 수동으로 변경

WAITFOR DELAY '00:00:02' -- 정상적인 프로세서를 위하여 5초간 Waiting

FETCH NEXT FROM c2 INTO @tablename ,@indexName
END

DEALLOCATE c2