데이터베이스 개발자 질문과 답변 게시판
안녕하세요.
디자이너와 쿼리를 사용하여 테이블 변경 시 각각의 내부 작업 단계 차이점에 대한 질문 드립니다.
SSMS 디자이너를 사용하여 테이블 변경 시 내부적으로 다음 단계로 작업이 수행됩니다.
1. 같은 테이블 스키마를 사용하여 임시 테이블을 만듭니다.
2. 실제 테이블에서 모든 데이터를 임시 테이블에 복사 합니다.
3. 실제 테이블을 삭제 합니다.
4. 임시 테이블을의 실제 테이블 이름으로 이름을 바꿉니다.
다음와 같이 프로필러를 통해서도 확인됩니다. (이러한 내부 작업으로 인해 데이터가 많은 경우 시간이 오래 걸리기도 하지요.)
이번에는 쿼리를 사용하여 컬럼 데이터 타입을 변경해 보았습니다. (디자이너를 사용하여 변경한 것과 동일한 내용)
그런데 보시는 바와 같이 디자이너를 사용할 때와는 달리 프로필러에서 내부 작업 단계가 확인되지 않습니다.
실제로 쿼리를 사용하면 디자이너와는 달리 내부 작업 단계가 수행되지 않는 것인가요?
디자이너를 사용한 테이블 변경과 쿼리를 사용한 테이블 변경. 과연 그 차이가 무엇일까요??
Comment 2
-
꼬셔죠
2015.02.03 14:11
예를들어 칼럼이 중간에 삽입되거나 삭제되어 실제 물리적 저장구조의 변화를 초래하기 때문에
디자이너의 프로세스는 당연한 거겠지요.
엑셀처럼 쉽게 필드이동이나 삽입 삭제 되었음 좋겠지만
SQL Server의 물리적 저장구조가 갑자기 바뀔순 없기에 이 특징은 버전업이 계속되도 지속되리라 보이네요.
갑자기 생각나는게 10여년전 심심풀이로 공부했던 PostgreSQL은 객체지향 시스템 구조라 SQL Server와는 달리 금방 처리될듯 한
기분이 드는군요
디자이너를 이용하면 항상 그렇더라구요.
아무래도 프로그래머가 어떤 경우든 적용 가능하도록 하기 위해 그런식으로 만든건지도...
여튼 왜 디자이너는 그렇게 동작하는가는 철학자들한테 넘기고
실제로는 디자이너로 작업하시면 안됩니다.(테스트 기간에야 상관없지만)
포린키라도 하나 있다거나 하면 더욱 복잡해지고
그 작업 하는 동안 스키마 락 걸리고 아주 지옥을 경험하시게 될겁니다.
디자이너가 하는 방식이든 아니면 딱 ALTER 문만 날리는 방식이든 원하는 결과에 도달하는건 마찬가지긴 합니다.