SSMS의 디자이너에서 테이블 수정 시 발생하는 영향

 

많은 분들이 컬럼의 순서 및 컬럼명을 변경하려고 합니다. 사실 RDB에서는 컬럼의 순서가 크게 상관이 없습니다. (왜 굳이 컬럼을 순서대로 맞추려고 하는건지…아마도 시인성 때문이겠죠.)

그래서 많은 분들이 SSMS에서 테이블 디자이너에서 수정을 합니다. 이 때 내부적으로는 어떤 작업이 일어나는지 알아 보도록 하겠습니다. 한 내부적으로 발생하는 작업을 살펴 왜 성능에 문제가 되는지 확인 할 수 있습니다.

 

SSMS를 실행하여 마우스 오른쪽을 클릭하여 디자이너를 실행 합니다.

 

 

[테이블 생성]

다음과 같이 Col1, Col2, Col3를 생성하고 저장 합니다.

 

프로파일러를 통하여 테이블 생성시 어떤 작업이 호출 되는지 확인해 봅니다.

일반적으로 테이블 생성문이 호출 되는 것을 확인 할 수 있습니다.

 

 

[컬럼 순서 수정]

이번에는 많은 분들이 질문하시는 컬럼 순서를 변경해 보도록 하겠습니다. 특히 큰 테이블에서 "디자이너를 이용하여 컬럼 순서를 변경했더니 DB가 죽었어요" 라는 질문을 많이 하는데 내부적으로 어떤 작업이 일어나는지 확인해 봅니다.

 

다음과 같이 Col1, Col2, Col3의 순서를 Col1, Col3, Col2로 변경하도록 하겠습니다. 변경 방법은 마우스를 드래그 하여 원하는 위치에 놓으면 됩니다.

 

프로파일러를 통하여 내부 작업을 확인해 보겠습니다.

우선 임시로 원본 테이블과 유사한 테이블을 생성하는 것을 확인 할 수 있습니다. (Tmp_TBL_C)

그리고 원본 테이블을 조회하여 임시테이블로 데이터를 넣는 것을 확인 할 수 있습니다. 이 때 컬럼의 순서를 변경하여 인서트 하는 것을 확인 할 수 있습니다.

그리고 마지막으로 원본 테이블을 삭제하고 임시 테이블의 이름을 원본으로 변경하는 작업이 진행 됩니다.

 

 

[컬럼 이름 변경]

이번에는 Col2의 이름을 Col4로 컬럼 이름을 변경합니다.

 

프로파일러를 통하여 내부적인 작업을 확인해 보겠습니다.

확인해 보니 Col2 -> Col4로 한번에 이름을 변경하는 것이 아닌 두 단계의 작업을 거치는 것을 확인 할 수 있습니다.(왜 그렇게 했을까요?)

 

 

[컬럼 추가]

이번에는 컬럼을 추가 하도록 합니다. 컬럼을 추가하면 맨 마지막 컬럼뒤에 추가되는 것을 확인 할 수 있습니다.

 

프로파일러를 통하여 내부적인 작업을 확인해 봅니다.

단순하게 기존 테이블의 마지막 열에 컬럼을 추가하는 것을 확인 할 수 있습니다.

 

[컬럼 추가시 기존 열 사이에 추가하기]

컬럼을 추가할 때 컬럼의 생성 위치를 기존에 생성된 열 사이에 추가하도록 합니다.

 

프로파일러를 통하여 내부 작업을 확인 합니다.

우선 임시 테이블을 생성합니다. 이 때 작업이 컬럼의 순서를 수정하는 것과 동일한 작업이 발생함을 확인 할 수 있습니다.

 

 

이처럼 내부적으로 수행되는 작업을 알고 있다면 대용량 테이블에서 디자이너를 이용하여 테이블의 속성을 추가, 생성, 삭제 하는 작업이 성능에 얼마나 큰 영향을 미치는지 알 수 있습니다. 


강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp



No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 1264
1606 extended events 용 excel view 공개 버전 minsouk 2014.04.07 6422
1605 [TIP] 한 라인에서 여러 테이블 삭제 하기. [3] 엘리엘1 2014.01.03 8644
1604 GhostRecord(인덱스에서 행 삭제시발생) jevida(강성욱) 2013.11.25 13579
1603 프로시저, 함수, 트리거 생성 정보 보기. jevida(강성욱) 2013.11.25 10653
1602 힙테이블에서 행을 삭제하면어떻게 처리 될까? [1] jevida(강성욱) 2013.11.25 9393
» SSMS의 디자이너에서 테이블 수정 시 발생하는 영향 [1] jevida(강성욱) 2013.11.25 10546
1600 SQL Server를 활용한 Perfmon 로그 저장 [1] jevida(강성욱) 2013.11.21 14775
1599 VLF 환경과 성능 jevida(강성욱) 2013.11.21 10093
1598 Block 모니터링 jevida(강성욱) 2013.11.21 8086
1597 추적파일을 테이블로 로드하기. jevida(강성욱) 2013.11.21 8912
1596 LOGON 트리거 jevida(강성욱) 2013.11.18 6583
1595 DeadLock(교착상태) 모니터 하기 [2] jevida(강성욱) 2013.11.18 11402
1594 Tempdb 경합(동시성 강화) jevida(강성욱) 2013.11.18 7579
1593 SSAS Backup 자동화 하기 jevida(강성욱) 2013.11.18 8189
1592 SSAS - MDX 스크립트 jevida(강성욱) 2013.11.18 7284
1591 SSAS - MDX 쿼리 jevida(강성욱) 2013.11.18 8165
1590 SSAS - MDX 활용 jevida(강성욱) 2013.11.12 7198
1589 SSAS - 집계 최적화 jevida(강성욱) 2013.11.12 7420
1588 SSAS - 사용자 계층 설계 jevida(강성욱) 2013.11.12 6617
1587 SSAS - 집계 설계 이해 - (3)집계 마법사에 특성 추가 jevida(강성욱) 2013.11.06 6982





XE Login