라벨이 mssql인 게시물 표시

mssql nolock에 대하여

Select 를 할 때 SQL서버는 Select 를 하는 그 순간에만 공유 잠금(Shared Lock)을 건다. 그런데 이 공유 잠금은 Insert, Update, Delete 가 수행될 때 걸리는 베타적 자금(Exclusive Lock)과 함께 걸릴 수는 없다. 따라서 Select 를 하는 동안에는 공유 자금이 걸린 곳에 대해 Insert, Update, Delete가 발생할 수 없기 때문에 질의 결과를 지연시키고 웹 언어(asp.net, asp)의 성능 저하를 가지고 오게 된다. (noLock) 힌트를 사용하면 Select 를 하는 동안 선택된 레코드가 그 순간에 다른 Sql문에 변경될 수 있다.(이런 경우를 막기 위해 공유 잠금을 거는 것이다.) 그러나 대부분의 Select 경유 정확한 값이 아니어도 상관이 없는 경우가 대 부분이라 할 수 있다. 예를 들어 게시판의 경우가 Select하는 동안에 글의 조회수가 올라 간다던가 혹여 다른 글이 올라 왔다고 하드라두 크게 문제가 되지 않기 때문이다. 그러나 쓰지 말아야 할 경우라고 한다면 중요하게 실시간으로 결재내역을 본다던가 아니면 입.출금 변동사항을 본다던가  할 때에는 쓰지 말아야 할 것이다. Select title, contents, id, From board (nolock)

mssql 자동증가값 초기화

디비 테이블에 테스트로 값을 넣다가 다시 제거하구 넣어려구 하면 이미 자동증가값이 증가 되어 있음을 알수있다. 자동증가값 자체에 부여한 의미가 크다면 값을 초기화 시킬필요가 있을것이다. -- DBCC CHECKIDENT(Table명,RESEED,초기값) DBCC CHECKIDENT(memberInfo, RESEED, 1 )