2013-03-06 2 views
0

방금 ​​명령 줄에서 mysqldump을 사용하여 150MB 테이블을 내 보냈습니다. 그것을 내보내는 데 약 5 초가 걸렸습니다.MySQL 가져 오기가 내보내기보다 느린 이유는 무엇입니까?

그러나 동일한 파일을 가져올 때 최대 5 분이 걸립니다.

왜 가져 오기가 내보내기보다 느리며 속도를 높이는 방법이 있습니까? 1GB보다 큰 테이블을 내보내거나 가져와야합니다.

잠금 장치가 있어야합니까? select는 데이터를 읽는 것이므로 데이터를 내보내는 것이 빠르며 가져 오기가 데이터를 쓰고 쓰기 잠금이 필요하므로 느려질 수 있습니다.

+1

인덱스가 될 수 있습니다. 너의 테이블에. – kamituel

+0

은 데이터베이스 드라이브와 동일한 대상 물리적 드라이브입니까? 색인은 또한 실제로 쓰기 시간에 큰 문제입니다. – Sebas

+0

호스팅 업체 중 한 곳에서 호스팅되는 서버에서 로컬 호스트 컴퓨터로 가져 오기 – GGio

답변

1

쓰기는 거의 모든 매체에서 읽기보다 느립니다. DBMS에서 인덱스는 유지 보수되어야하고, 제약 조건을 점검하고, 공간을 할당해야하며, 트랜잭션 경계를 오버로딩해야하고, 트랜잭션 로깅이 발생해야 롤백이 작동해야합니다 ...

1

읽기는 DBMS에 쓰는 것보다 훨씬 간단합니다. 그리고 그것은 트랜잭션 로깅을 고려하기 전에입니다. 예를 들어 데이터 행을 써야합니다. 새로운 행이있는 테이블의 모든 인덱스를 갱신해야합니다. 즉, 기록 당 하나의 I/O 이상이 필요합니다.

+0

어떤 방법 으로든 글을 쓸 수 있습니까? – GGio

+0

많은 양의 데이터를 가져 오는 경우 데이터로드가 완료 될 때까지 인덱스를 작성하지 마십시오. 그렇게하면 영구적으로 업데이트하는 것이 아니라 한꺼번에 인덱스를 구축 할 수 있습니다. 그것은 종종 많은 작업을 절약합니다. 단점은 고유성 제약 조건을 적용하기 위해 인덱스에 의존하는 경우 존재하지 않는 인덱스가 행을 거부 할 수 없다는 것입니다. –

관련 문제