2010-06-02 8 views
6

MySQL konsolu aracılığıyla SQL ithalatımı oldukça yavaş ve SQL dosyamız her geçen gün artmakta olduğundan, nasıl içe aktarılacağına dair herhangi bir alternatif olup olmadığını öğrenmek istiyorum. SQL dosyası daha hızlı.MySQL konsolu büyük SQL dosyalarının içe aktarılmasını yavaşlatıyor

Oracle veya diğer sistemlere geçmek bir seçenek değildir, yapılandırmanın aynı kalması gerekir.

Şu anda SQL dosyası şöyledir: 1.5 GB. Ben Apache 2.2.14, PHP 5.2.11 ve MySQL 5.1.41 ile WAMP üzerinde yaşıyorum.

mysql -u username -p dbname < sqlfilename.sql 

Herhangi önerileri:

Belki konu içe bir basit yapılır, burada mı?

+0

bkz: ben --no-autocommit ve --opt içeren, kullandıkça Burada

tam Mysqldump komut satırı için bir örnektir ? –

+0

Bu, eğer doğruysa Sql içine yerleştirilmesi gereken bir şeydir, bu mümkün değildir, çünkü herhangi bir editörde 1.4 Gb olan bir Sql dosyasını değiştiremezsiniz ve dış kaynaktan gelir. – Kennethvr

+0

Birisine Yardımcı Olabilir: Önce bilgisayarınızı yeniden başlatın, sonra antivirüs/güvenlik duvarları/bant genişliği izleyicilerinizi + çalıştırmaya gerek duymadığınız diğer programları devre dışı bırakın. Fakat bu iki şeyi devre dışı bırakarak hızını 6 kat artırdım. – Andrew

cevap

5

İçe aktarma sırasında etkinleştirilmiş dizinlere sahip olmak, sunucunuzu taramayı yavaşlatır. ALTER TABLE tablename DISABLE KEYS; ve içe aktarma işleminden önce ve sonra ..ENABLE KEYS kullanılması, içe aktarma hızını artıracak, ancak dizinleri yeniden oluşturmak için biraz zaman alacaktır, bu nedenle sonuçta büyük bir hız kazancı olmayabilir. Ayrıca, belki de myisam tablolarının kullanılması (referans bütünlüğü seçeneklerine sahip innodb ile karşılaştırıldığında) genel olarak daha iyi performans verir, çünkü referans bütünlüğü ek yükü söz konusu değildir.

Şahsen, mysql konsolundan içe aktarım ifadesini kullanmıyorum, ancak mysql -uUSER -pPASS DBNAME < file.sql kullanarak sql dosyalarını içe aktarıyorum ve benim için iyi çalışıyor.

Yardım edin.

+0

, şu an nasıl yuvarlandığım ... ve bu büyük verilerde hızlı değil ... – Kennethvr

+1

mysqlimport komutunu kullanmayı düşünün. Bazı sekmelerle veya başka bir şeyle ayrılmış biçimde veri içeren düz bir dosya alır ve sql sorgularını yürütmekten daha hızlı bir şekilde tabloya içe aktarır. –

+2

http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html adresine aşina değilseniz, mysqlimport komutuyla ilgili bilgi için. –

0

Sorunun çözülüp çözülmeyeceğinden emin değilim, çünkü darboğazın nerede olduğundan emin değilim ... Ancak, ücretsiz bir MySQL yönetim konsolu olan Toad for MySQL aracından gerçekten etkilendim. Harika ithal araçları var ve standart MySQL yönetim konsolundan genellikle daha iyi IMO'dur.

+0

herhangi biri başka büyük veri dosyaları ile bu konuda Toad deneyimi var? – Kennethvr

+0

Toad bağlantısı bozuk ... – DrCord

+0

@DrCord - güncellendi. – UpTheCreek

1

hızlandırmak MySQL için geri yükleme işlemleri Bulk Data Loading for InnoDB Tables verilen bir dizi tavsiye ilkidir.

Otomatik geri yüklemeyi geri yükleme zamanında el ile kapatmak yerine, MySQL verilerinizi SQL dosyanızın içine tüm gerekli ifadeleri içeren bir şekilde zaten boşaltabilirsiniz.

mysqldump için komut satırı parametresi --no-autocommit'dur. Geri yükleme işlemlerini hızlandırmak için diğer parametrelerin bir kombinasyonunu ayarlayan --opt eklemeyi de düşünebilirsiniz. Eğer mysqlimport ya da LOAD DATA INFILE kullanıyorsunuz bu parametrelerin ayrıntılar için

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

reference of mysqldump