SSMS의 디자이너에서 테이블 수정 시 발생하는 영향
많은 분들이 컬럼의 순서 및 컬럼명을 변경하려고 합니다. 사실 RDB에서는 컬럼의 순서가 크게 상관이 없습니다. (왜 굳이 컬럼을 순서대로 맞추려고 하는건지…아마도 시인성 때문이겠죠.)
그래서 많은 분들이 SSMS에서 테이블 디자이너에서 수정을 합니다. 이 때 내부적으로는 어떤 작업이 일어나는지 알아 보도록 하겠습니다. 한 내부적으로 발생하는 작업을 살펴 왜 성능에 문제가 되는지 확인 할 수 있습니다.
SSMS를 실행하여 마우스 오른쪽을 클릭하여 디자이너를 실행 합니다.
[테이블 생성]
다음과 같이 Col1, Col2, Col3를 생성하고 저장 합니다.
프로파일러를 통하여 테이블 생성시 어떤 작업이 호출 되는지 확인해 봅니다.
일반적으로 테이블 생성문이 호출 되는 것을 확인 할 수 있습니다.
[컬럼 순서 수정]
이번에는 많은 분들이 질문하시는 컬럼 순서를 변경해 보도록 하겠습니다. 특히 큰 테이블에서 "디자이너를 이용하여 컬럼 순서를 변경했더니 DB가 죽었어요" 라는 질문을 많이 하는데 내부적으로 어떤 작업이 일어나는지 확인해 봅니다.
다음과 같이 Col1, Col2, Col3의 순서를 Col1, Col3, Col2로 변경하도록 하겠습니다. 변경 방법은 마우스를 드래그 하여 원하는 위치에 놓으면 됩니다.
프로파일러를 통하여 내부 작업을 확인해 보겠습니다.
우선 임시로 원본 테이블과 유사한 테이블을 생성하는 것을 확인 할 수 있습니다. (Tmp_TBL_C)
그리고 원본 테이블을 조회하여 임시테이블로 데이터를 넣는 것을 확인 할 수 있습니다. 이 때 컬럼의 순서를 변경하여 인서트 하는 것을 확인 할 수 있습니다.
그리고 마지막으로 원본 테이블을 삭제하고 임시 테이블의 이름을 원본으로 변경하는 작업이 진행 됩니다.
[컬럼 이름 변경]
이번에는 Col2의 이름을 Col4로 컬럼 이름을 변경합니다.
프로파일러를 통하여 내부적인 작업을 확인해 보겠습니다.
확인해 보니 Col2 -> Col4로 한번에 이름을 변경하는 것이 아닌 두 단계의 작업을 거치는 것을 확인 할 수 있습니다.(왜 그렇게 했을까요?)
[컬럼 추가]
이번에는 컬럼을 추가 하도록 합니다. 컬럼을 추가하면 맨 마지막 컬럼뒤에 추가되는 것을 확인 할 수 있습니다.
프로파일러를 통하여 내부적인 작업을 확인해 봅니다.
단순하게 기존 테이블의 마지막 열에 컬럼을 추가하는 것을 확인 할 수 있습니다.
[컬럼 추가시 기존 열 사이에 추가하기]
컬럼을 추가할 때 컬럼의 생성 위치를 기존에 생성된 열 사이에 추가하도록 합니다.
프로파일러를 통하여 내부 작업을 확인 합니다.
우선 임시 테이블을 생성합니다. 이 때 작업이 컬럼의 순서를 수정하는 것과 동일한 작업이 발생함을 확인 할 수 있습니다.
이처럼 내부적으로 수행되는 작업을 알고 있다면 대용량 테이블에서 디자이너를 이용하여 테이블의 속성을 추가, 생성, 삭제 하는 작업이 성능에 얼마나 큰 영향을 미치는지 알 수 있습니다.
강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
프로시저, 함수, 트리거 생성 정보 보기 (0) | 2015.07.17 |
---|---|
힙테이블에서 행을 삭제하면 어떻게 처리 될까? (0) | 2015.07.17 |
SQL Server를 활용한 Perfmon 로그 저장 (0) | 2015.07.17 |
VLF 환경과 성능 (0) | 2015.07.17 |
Block 모니터링. (0) | 2015.07.17 |