데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

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
1613 extended events 를 이용한 wait 분석 minsouk 2014.07.25 6264
1612 동일기준에대해 복수컬럼 PIVOT 사용하기 열이 2014.06.27 21372
1611 SELECT / UPDATE / INSERT 쿼리를 쉽게 만들자... [1] Hisory 2014.05.12 10870
1610 ssms 자동 언어 변경이 되면, 이렇게 설정하세요 minsouk 2014.04.27 9566
1609 [QUERY] 그룹 번호 만들기 이스트럭(강동운) 2014.04.11 8688
1608 [QUERY]연승을 구해보자! [2] 이스트럭(강동운) 2014.04.11 9485
1607 VLF 이스트럭(강동운) 2014.04.11 8078
1606 extended events 용 excel view 공개 버전 minsouk 2014.04.07 6400
1605 [TIP] 한 라인에서 여러 테이블 삭제 하기. [3] 엘리엘1 2014.01.03 8616
1604 GhostRecord(인덱스에서 행 삭제시발생) jevida(강성욱) 2013.11.25 13561
1603 프로시저, 함수, 트리거 생성 정보 보기. jevida(강성욱) 2013.11.25 10632
1602 힙테이블에서 행을 삭제하면어떻게 처리 될까? [1] jevida(강성욱) 2013.11.25 9379
» SSMS의 디자이너에서 테이블 수정 시 발생하는 영향 [1] jevida(강성욱) 2013.11.25 10526
1600 SQL Server를 활용한 Perfmon 로그 저장 [1] jevida(강성욱) 2013.11.21 14751
1599 VLF 환경과 성능 jevida(강성욱) 2013.11.21 10063
1598 Block 모니터링 jevida(강성욱) 2013.11.21 8074
1597 추적파일을 테이블로 로드하기. jevida(강성욱) 2013.11.21 8895
1596 LOGON 트리거 jevida(강성욱) 2013.11.18 6562
1595 DeadLock(교착상태) 모니터 하기 [2] jevida(강성욱) 2013.11.18 11356
1594 Tempdb 경합(동시성 강화) jevida(강성욱) 2013.11.18 7566





XE Login