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
운영게시판
최근게시물
MySQL Q&A 31090 게시물 읽기
No. 31090
대용량 Table 복사 관련 문의드립니다.
작성자
질문
작성일
2017-07-11 23:45
조회수
4,821

 안녕하세요?

현재 회사에서 사용중엔 DB Table 중 구매 테이블의 데이터 건수가 3억건이 넘어가고 있는데, 제대로 인덱스가 잡혀있지 않아 해당 작업을 진행하려고 합니다.

기존 Table과 구조가 똑같은 Table을 만들어서 추가하고자 하는 인덱스를 추가한 뒤에 

INSERT INTO ~~ SELECT * FROM ~~

형식으로 복사해서 넣고 그 이후

ALTER TABLE RENAME 으로 이름을 변경하려고 합니다.

 

위와 같이 진행하려고 몇가지 테스트를 해본 결과 제가 잘 모르는 문제가 생길 수 있을것 같아 여기 계신 여러 분들의 고견을 듣고 싶습니다.

 

1. 복사하려는 Table이 구매 정보가 저장되는 Table이다 보니 복사하는 과정에서 Insert 나 Update 가 꾸준히 발생하고 있습니다.

만약 INSERT INTO A SELECT * FROM B WHERE no > 10000 AND no < 100000

처럼 최대 크기가 아닌 훨씬 멀리 떨어진 영역에서 SELECT를 하더라도 B Table에 INSERT 를 하기 위해서 SELECT 가 끝날때까지 대기하나요?

innoDB 는 insert 와 select, update가 각각 row 단위로 lock 이 걸린다고 알고 있는데 테스트를 해봤을때는 SELECT 가 종료되기 전까지 INSERT 가 안되는것 같아서 문의 드립니다.

 

2. 현재 DB가 Master - Slave 구조로 Slave 가 15개 연결이 되어 있는 상태입니다.

데이터 양이 많다 보니 서비스중에도 꾸준히 데이터를 복사하다가 어느순간 교체를 하려고 하는데, 

ALTER TABLE RENAME 을 사용할때 Table의 용량이 크면 속도가 그만큼 오래 걸리는지요?

어디서 봤을때는 메타 정보만 변경하는것이기 때문에 RENAME 은 용량등에는 영향을 받지 않는다고 본거 같은데, 다시 찾아보려니 그런 말을 찾을 수가 없어서 문의드립니다.

ALTER TABLE 로 필드 추가나 INDEX 등을 추가할때는 tmp TABLE을 만들어 처리하는걸로 알고 있는데 RENAME 도 이와같이 처리가 되는건지 궁금하네요.

 

혹 제가 방식을 잘못 생각하고 있다면 다른 분들은 어떤 방식으로 대용량 Table에 Index 를 추가하는지 조언을 해주시면 감사하겠습니다.

[Top]
No.
제목
작성자
작성일
조회
31093중복데이타 추출-> 제거? [2]
꼬끼오
2017-07-16
4348
31092개행문자 문의드립니다. [1]
goblin
2017-07-12
4296
31091오라클db의 프로시져를 mysql 로 전환관련 질문
오노
2017-07-12
4332
31090대용량 Table 복사 관련 문의드립니다.
질문
2017-07-11
4821
31089php mysql 연동 오류 [1]
촙촙
2017-07-10
4685
31088oracle을 mysql 변환 도와주세요.
정다다
2017-07-08
4074
31087visual studio 2013에서 mysql이용시 timeout설정부탁합니다. [1]
정다다
2017-07-08
4622
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다