database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 34067 게시물 읽기
No. 34067
6000만건데이터에 INDEX를 생성하는데 시간이 너무 걸리네요
작성자
오라초보
작성일
2008-07-11 00:12
조회수
3,279

제목처럼 6000만건정도 데이터를 INDEX를 생성하는데 시간이 너무걸리는데


AAA 라는 테이블을 rename to AAA2 시키고 AAA를 인덱스가 들어간 테이블을 생성하고


INSERT INTO AAA (SELECT AAA2)


이렇게 하는게 더 빠를까요?


운영중인 DB에 함부로 할수가 없어서 머리만짜고 있습니다.


리플좀 달아주세요

이 글에 대한 댓글이 총 3건 있습니다.

운영중인 DB라면 끊임없이 트랜잭션이 발생할텐데 인덱스 생성이라뇨~


일단 DB를 스톱 시켜놓고 작업하셔야 합니다.


6천만건이 장난입니까? ^^;;;;


윗선에 이야기해서 새벽시간에 작업하도록 하세요~


저도 천만건 데이터 인덱스 리빌드할때 새벽시간에 스톱해놓고 합니다. ㅠ.ㅠ

나도초보님이 2008-07-11 09:12에 작성한 댓글입니다. Edit

6000만건이면 서버 사양에 따라 다르겠지만 적은 양은 아닙니다.


인덱스가 있는 상태에서 insert 하시면 오히려 성능이 더 떨어질 수 있을것 같네요...

차라리 인덱스 없는 테이블 만들고 insert (select~); 한다음 인덱스 만드는게 훨씬 빠릅니다.

그리고 인덱스 생성할 때 locking으로 아무것도 할 수 없을 테니 윗분 말씀처럼 야간 시간에 하셔야 할듯..


nologging 과 pararell 옵션을 넣어서 생성하시고 생성후에 돌려 놓으면

그나마 조금더 빨리 생성하실 수 있습니다.

,님이 2008-07-11 10:15에 작성한 댓글입니다. Edit

대량의 데이터를 새로 넣으시려면 테이블에 인덱스가
작성되어있으면 기하급수적으로 insert속도가 느려집니다.
따라서 충분한 데이터가다 insert된 후에 인덱스를 생성하세요.
인덱스는 패러럴 걸어서 하면 좀더 많이 빠릅니다.
그리고 서버사양이 충분치 않으시다면 특별히 그런 용도로 고안된 서버가
아니라면 사용자수가 많치 않은 시간대에 하시거나 새벽에 하시는게 좋습니다.

박두환(amdrf)님이 2008-07-16 12:50에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
34070SQL Parser 에 관해서..
younglee
2008-07-11
2508
34069오라클 에러메세지 손상된 패킷....
차지은
2008-07-11
2198
34068오라클 10g 공부하고 있는 왕초보입니다. 질문좀.. [2]
이덕로
2008-07-11
2155
340676000만건데이터에 INDEX를 생성하는데 시간이 너무 걸리네요 [3]
오라초보
2008-07-11
3279
340665분전 데이터 검색.... 쿼리.. 공식좀 가르쳐주세요 [2]
띠링
2008-07-10
3191
34065er-win에서 시퀀스 설정하는 방법 좀 알려주세요 [2]
김태훈
2008-07-10
5063
34064sqlplus에서 shutdown 하다가 컨트롤+C 를 눌러 취소를..... [1]
박명훈
2008-07-10
2691
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다