2010-06-02 4 views
6

MySQL 콘솔을 통한 필자의 SQL 가져 오기 속도가 느리며 SQL 파일이 매일 증가함에 따라 필자는이 파일을 가져 오는 방법에 대한 대안이 있는지 알고 싶습니다. SQL 파일이 더 빠릅니다.거대한 SQL 파일을 가져올 때 MySQL 콘솔의 속도가 느려짐

Oracle 또는 다른 시스템으로 변경하는 것은 옵션이 아니므로 구성이 동일해야합니다.

현재 SQL 파일은 1.5GB입니다. 아파치 2.2.14, PHP 5.2.11 및 MySQL 5.1.41을 사용하여 WAMP에 있습니다.

mysql -u username -p dbname < sqlfilename.sql 

어떤 제안 :

은 아마도 문제는 수입은 간단한에 의해 수행되고, 여기?

+0

를 참조하십시오 내가 --no-autocommit--opt를 포함, 그것을 사용으로 여기

는 완전한 mysqldump는 명령 행에 대한 예입니다 ? –

+0

이것은 편집자가 1.4GB 인 SQL 파일을 변경할 수 없기 때문에 Sql에 삽입해야하는 것이지 불가능합니다. 외부 소스에서 오는 것입니다. – Kennethvr

+0

다른 사람을 도울 수 있습니다 : 먼저 컴퓨터를 다시 시작한 다음 바이러스 백신/방화벽/대역폭 추적기와 달리 필요없는 다른 프로그램을 비활성화하십시오. 하지만 그 두 가지를 사용하지 않으면 속도가 6 배 향상되었습니다. – Andrew

답변

5

가져 오는 동안 색인을 사용하도록 설정하면 서버가 크롤링 속도가 느려집니다. ALTER TABLE tablename DISABLE KEYS; 가져 오기 전후에 ..ENABLE KEYS을 사용하면 가져 오는 속도는 빨라지지만 인덱스를 다시 만들려면 시간이 걸릴 것이므로 결국에는 큰 속도 향상이 아닐 수도 있습니다.

또한 참조 무결성 오버 헤드가 없으므로 myisam 테이블 (참조 무결성 옵션이있는 innodb와 달리)을 사용하면 성능이 향상됩니다.

개인적으로 mysql 콘솔에서 import 문을 사용하지 않고 mysql -uUSER -pPASS DBNAME < file.sql을 사용하여 sql 파일을 가져오고 저에게 적합합니다.

희망이 있습니다.

+0

그게 지금 압연하고있어 ... 거대한 데이터에서 빠르지는 않습니다 ... – Kennethvr

+1

mysqlimport 명령 사용을 고려하십시오. 그것은 tab-or-something-else 형식으로 분리 된 형식의 데이터를 포함하는 플랫 파일을 가져 와서 SQL 쿼리를 실행하는 것보다 빠르게 테이블로 가져옵니다. –

+2

mysqlimport 명령에 익숙하지 않다면 http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html을 참고하십시오. –

0

병목 현상이 어디 있는지 모르겠으므로 문제가 해결 될지 확신 할 수 없습니다. 그러나 대체 MySQL 관리 콘솔로 무료 Toad for MySQL 도구에 깊은 인상을 받았습니다. 그것은 훌륭한 가져 오기 도구를 가지고 있으며, 일반적으로 표준 MySQL 관리 콘솔보다 훨씬 나은 IMO입니다.

+0

거대한 데이터 파일과 관련하여이 문제에 대해 Toad와 관련된 경험이있는 사람이 있습니까? – Kennethvr

+0

두꺼비 링크가 깨졌습니다. – DrCord

+0

@DrCord - updated. – UpTheCreek

1

는 속도의 MySQL에 대한 복원 작업을 위해 Bulk Data Loading for InnoDB Tables에 주어진 권고의 시리즈의 첫 번째입니다.

복원시에 자동 커밋을 수동으로 전환하는 대신 SQL 파일에 필요한 모든 명령문을 포함하는 방식으로 MySQL 데이터를 이미 덤프 할 수 있습니다.

mysqldump의 명령 줄 매개 변수는 --no-autocommit입니다. 복원 작업 속도를 높이기 위해 다른 매개 변수의 조합을 설정하는 --opt을 추가 할 수도 있습니다. 당신은 mysqlimport가 또는 LOAD 데이터 INFILE을 사용하고 이러한 매개 변수에 대한 자세한 내용은

mysqldump -hlocalhost -uMyUser -p'MyPassword' --no-autocommit --opt --default-character-set=utf8 --quote-names MyDbName > dump.sql 

reference of mysqldump

관련 문제