반응형

SQL Server 2005에 varchar(max), nvarchar(max), varbinary(max) 데이터 형이 도입되면서 해당 컬럼을 수정하는데 이용되는 .write() 형태의 Chunk Update 문이 추가되었습니다.


다음 데모 스크립트는 Concatenate 작업에 단순 + 연산자와 .write()를 이용한 청크 업데이트 간의 성능 차이를 확인할 수 있는 데모 스크립트 입니다..
PC에서 수행할 경우, 10000회를 1000회 또는 5000회 정도로 낮춰서 수행해 보시기 바랍니다....




/****************************************************************

             varchar(max) +  청크업데이트(Chunk Update) 사용

****************************************************************/

 

--테스트용테이블변수정의

DECLARE @T TABLE (V VARCHAR(MAX))

INSERT INTO @T VALUES ('')

 

DECLARE @I INT, @S DATETIME

SET @S = GETDATE()

SET @I = 0

WHILE @I < 10000

BEGIN

             UPDATE @T

             SET V.WRITE (REPLICATE('A',10),NULL,NULL)

            

             SET @I = @I + 1

END

SELECT DATEDIFF(MS,@S,GETDATE()), LEN(V) FROM @T

GO

--826     100000 : 수행시간0.826, V 컬럼의길이100,000

 


/****************************************************************

             varchar(max) +  '+' 연산자사용

****************************************************************/

DECLARE @T TABLE (V VARCHAR(MAX))

INSERT INTO @T VALUES ('')

 

DECLARE @I INT, @S DATETIME

SET @S = GETDATE()

SET @I = 0

WHILE @I < 10000

BEGIN

             UPDATE @T

             SET V = V + REPLICATE('A',10)

            

             SET @I = @I + 1

END

SELECT DATEDIFF(MS,@S,GETDATE()), LEN(V) FROM @T

GO

 

--7343   100000 : 수행시간7.3, V 컬럼의길이100,000




/****************************************************************

    테스트 환경 : 2794 Mhz * 8 CPU,   8 GB Memory,  Win 2003 SP1        
****************************************************************/

반응형

+ Recent posts