_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈
FrontPage › DELETE를빠르게하는방법

Contents

[-]
1 개요
2 예제


1 개요 #

만약 DELETE를 빠르게 하는 방법을 알려줄 것이라고 클릭을 했다면 좀 실망감을 안겨줄 것 같다. 왜냐하면 DELETE를 빠르게 하는 방법은 없기 때문이다. INSERT야 Bulk Insert라는 것이 있지만 DELETE, UPDATE는 빠르게 하는 방법이 없다. OLTP환경에서는 대량의 데이를 삭제하는 것은 큰 부하를 줄 뿐만 아니라 Lock 문제가 동시성에 악영향을 준다. 특히, 넓은 범위의 락이나 락에스컬레이션으로 블록킹을 유발시킬 수 있다. 어쨌든 최소한의 부하로 삭제하는 것이 중요하다. 다행히도 2005버전부터는 DELETE, UPDATE문에 TOP문장을 쓸 수 있다. 그러므로 DELETE를 루프를 돌리면서 작은 부하를 여러번 주어서 삭제할 수 있다. 다음은 그 예다.

2 예제 #

create table #temp
(
	seq int
,	dt char(8)
)

insert #temp values(1,'20100101')
go 1000
insert #temp values(1,'20100102')
go 1000

while(1=1)
begin
	delete top(10) a 
	from #temp a
	where dt <= '20100101'
	
	if @@rowcount = 0 
		break
end

댓글 남기기..
이름: : 오른쪽의 새로고침을 클릭해 주세요. 새로고침
EditText : Print : Mobile : FindPage : DeletePage : LikePages : Powered by MoniWiki : Last modified 2018-04-13 23:12:52

한가지 변함없는 법칙이 있다. 우리가 깊은 상처를 입었을 때 용서하지 않는 한은 어떤 치유도 없다는 것이다. (알란 패턴)