오라클 기존 데이터가 약 100만~9999만개 사이의 테이블에 대한 unique index 수정 질문있습니다. 0 2 2,086

by IlI아구 [Oracle Tuning] 오라클 alter drop create ddl [2017.11.02 09:36:37]


안녕하세요! 오라클 질문드릴게 있습니다.

 

저희 운영쪽 회사에서 주로 DB관리를 할때, 거의 alter는 치지 않는게 원칙이더라구요. (그냥 회사 내 개발자들만의 작은 룰같은 것인가 봅니다.)

그래서 일을 어떻게 하는고 하니...

drop, create 하는 방식으로 뭐 백업을 받아놓고 테이블작업을 하던 다 그러고 있더라구요....

그래서 제가 아직 경력이 많이 없기도 하고 해서, 궁금해서 직장내 상사분들에게 물어봤는데...!!

'사실 제 생각에도 크게 영향 없을 거 같은데, 간혹 어떤 dba분들이 alter 남용 시 테이블에 치명적인 성능 저하 이슈를 야기할 수 있다고 주의하라 카더라...'

라는 이유로 그냥 막연히 alter는 아예 사용이 안되고 있더라구요!

 

그래서 이번에 운영지원간 1000만단위의 데이터테이블의 unique index를 변경해야될 일이 생겼는데 이거

귀찮게 테이블 다 백업받고 아예 다시 create 하게 생겼는데, 갑자기 인덱스만 drop, create하면 다시 인덱싱 될테니 문제될게 없지 않을까 라는 생각이 들었습니다.

 

근데, 그렇게 작업하려니 두가지 질문이 생기게 되었습니다!!!!

 

1. alter 하는 작업과, drop/create하는 작업의 차이는 무엇이 있을까?

2. 테이블을 수정하던, 컬럼을 수정하던 어떤 작업을 하던 alter로 작업했을때 성능저하 이슈를 일으킬만한 작업은 무엇이 있을까?

라는 두가지의 의문점이 생겼는데요, 제가 인터넷으로 잘 검색해보질 못하는 것인지 좀 찾아봤는데 이렇다할 명쾌한 해석은 안나오더라구요 ㅠㅠㅠ

그래서 이렇게까지 질문을 올리게 되었습니다.

 

DB 고수님들 알려주시면 감사하겠습니다!

PS. 여기서 제가 작업하는 과정은 PK가 아닙니다 UNIQUE INDEX 입니다.

by 2dong0 [2017.11.02 15:46:55]

1. alter 하는 작업과, drop/create하는 작업의 차이는 무엇이 있을까?

- 인덱스 컬럼을 변경하는 경우 ALTER 할수 없으며, DROP 후 CREATE 하시는게 맞습니다. 

  인덱스 재생성시 테이블에 LOCK이 걸리므로 DML에 지연이 발생하게 됩니다. (단, ONLINE 옵션 사용 제외)

2. 테이블을 수정하던, 컬럼을 수정하던 어떤 작업을 하던 alter로 작업했을때 성능저하 이슈를 일으킬만한 작업은 무엇이 있을까?

라는 두가지의 의문점이 생겼는데요, 제가 인터넷으로 잘 검색해보질 못하는 것인지 좀 찾아봤는데 이렇다할 명쾌한 해석은 안나오더라구요 ㅠㅠㅠ

그래서 이렇게까지 질문을 올리게 되었습니다.

  - 질문의 내용이 폭 넓어서 답변 드리는게 어렵네요~^^


by 우리집아찌 [2017.11.02 15:49:57]

저도 정확히는 모르지만 alter로 컬럼추가시 이슈가 생길수있어서

create table로 생성하고 있습니다. ( alter 명령어 사용해도 reorg하면 괜찮다고 합니다 )

운영중인 대용량 테이블인 경우 index 생성시 느리므로  다른이름을 table을 생성하여 rename 하여 사용하고 있습니다. ( 인덱스명도 rename ) 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입