2014-11-25 3 views
0

innodb & myisam 테이블이 포함 된 데이터베이스에 대해 mysqldump를 호출합니다. 11GB 크기의 뚱뚱한 MyISAM 테이블에서 덤프는 여전히 매우 빠르게 실행됩니다. 빠른 의미 iotop은 70MB/s 이상의 쓰기 성능을 보여줍니다. 큰 테이블에서 발생하는 것을 알 수 있도록 mytop에서 프로세스를 봅니다. 덤프 파일은 최대 8GB까지 증가하고 갑자기 I/O는 약 1MB/s에 불과합니다.mysqldump 큰 MyISAM 테이블이 빠르게 시작되어 갑자기 느려짐

서버로드는 정상이며 다른 프로세스는 실행되지 않습니다. my.cnf 설정을 변경하려고 시도했지만 아무 것도 효과가 없습니다.

답변

0

성능은 몇 가지 요인에 따라 달라집니다.

나는 그들이 참고로

(10 억 개 이상의 행)을 42기가바이트 덤프 파일을로드하기 위해 클라이언트에 대한 an alternative solution to Mysqldump을 만들 수 있었다 : 원래, mysqldump는이 64 기가 바이트 램과 16 코어 서버에 3.9 일을 가져다가 10 개의 디스크 SSD 어레이.

사용 uniVocity 우리는 3 년 된 랩톱을 사용하여 동일한 데이터를 90 분 내에로드했습니다. 이를로드하려면 30 일 평가판 라이센스와 함께 사용할 수 있습니다. 당신은 제약하지 않도록하기 위해 덤프 파일에있는 경우

체크인 :

SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 
SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' 

을가 추가되지 않을 경우 그 외에는

, 여기에 성능에 영향을 미칠 수있는 몇 가지 있습니다 또는 모든 제약 조건을 제거하려면 create table 스크립트를 변경하십시오. 덤프로드를 실행하는 동안 제약 조건 (기본 키, 외래 키 등)이 활성화 된 경우, 데이터베이스가 증가 할 가능성 (더 많은 PK 및 FK)에 대해 모든 삽입에서 이러한 제약 조건을 확인하므로 시간이 지남에 따라 프로세스가 느려질 것입니다. .

당신이 이노 (귀하의 경우 만 다른 사람 도움이 될 수 있습니다 정확히)를 사용하는 경우, my.cfg 파일이 추가

innodb_doublewrite = 0 
innodb_buffer_pool_size = 8000M 
# innodb_log_file_size = 512M - If I enable this one the server won't start. Couldn't identify why. 
log-bin = 0 
innodb_support_xa = 0 
innodb_flush_log_at_trx_commit = 0