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, @
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, @
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
****************************************************************/
'연구개발 > DBA' 카테고리의 다른 글
OPENROWSET을 사용하여 큰 개체 가져오기 (0) | 2009.07.29 |
---|---|
.WRITE 절을 사용하여 큰 값 데이터 형식 업데이트하기 (0) | 2009.07.29 |
로그 전달 환경에서 데이터 파일 추가 시 처리 문제 (0) | 2009.07.28 |
파일 그룹 테스트 - > 파일 그룹 백업 / 복원 (0) | 2009.07.28 |
SQL 2000 시스템 테이블 vs 2005 카테고리 뷰 (0) | 2009.07.28 |