데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
temp 테이블에 대해 좀 알아보다가
사용 시 주의 사항 중에 이런 내용이 있어서 질문 드립니다.
----------------------------------------------------------------------------------------------
템프 테이블을 만들 때 Select Into문을 사용하지말라.
Select Into를 사용하면 코딩은 간편해지겠지만 템프 테이블 생성시 잠금이 발생.
시간이 좀 걸리더라도 테이블 생성 스크립트를 만들고Insert into문을 사용하여 하나하나 넣는 게 좋다.
키보드몇 번 안 두드려도 된다고 Select into ~ where 1=0 같은 코딩은 하지 말라는 것.
----------------------------------------------------------------------------------------------
위 내용에서 말하는 잠금이 발생한다는게....
템프 테이블의 잠금을 말하는 건지....
원본 테이블의 잠금을 말하는 건지....
select ...
into #aaa
from aaa with(nolock)
로 nolock 옵션을 주면 락에서 피할 수 있지 않을까요??
원본 테이블의 잠금을 말하는 거라면.... 예문 처럼 nolock 옵션을 주면 잠금에서 해방이 되지 않을까요??
----------------------------------------------------------------------------------------------------
음... 또 하나 질문 추가로 드릴게요.
모든 프로시저에 템프테이블의 사용을 너무 남발 하고 있어요....
템프 테이블의 과다한 사용이 좋은건지.... 서버 성능이 받쳐주면 상관이 없는건지....
고수님들 부탁드립니다.(__)
템프 테이블을 만들 때 Select Into문을 사용하지말라. ! 를 이야기함에 있어서 기본적인 기준이 있을듯 합니다.
질문중 과다한 사용이 좋은건지.... ? 당연 과다한건 좋지 않습니다. ㅎㅎㅎ
인라인뷰, CTE, 커서, 테이블리턴함수, 프로시저 등으로 템프테이블을 이용하시는걸 대체 하실수도 있습니다.
모든건 과도하면 안좋은건 당연합니다. 디비나 서버의 성능이 받쳐주면 데이타량에 따라 다를수 있지만 상관없을수도 있습니다.
템프테이블을 만드실때 들어가는 데이타량을 체크해보세요...
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=39&MAEULNO=16&no=954 데브피아에 내용 같은데.
이 경우는 임시테이블을 무작정 남발하는 경우에 해당되지 않을까 생각됩니다.
커서는 안좋다, 템프는 안좋다,스칼라 서브쿼리는 성능을 저해한다, union all은 쓰면 안된다는 말들을 가끔 하시는걸 봅니다. 이건 정말 잘못된 생각입니다.
굳이 안써도 되는 상황에 무리하게 쓰면서 하는 말들이라고 보시면 될듯 합니다. 이런걸 쓰면 안된다는 고수분들은 없습니다.
이런 경우에는 이걸 쓰는게 효과적이다고 할수 있지만 ,..... 제 생각입니다.
상황에 맞게 적절히 쓰시면 충분히 좋은 성능을 내기도 합니다. 훨씬....