Próbuję załadować zbiorcze około 12-metrowe rekordy do tabeli InnoDB w (lokalnym) mysql przy użyciu LOAD DATA INFILE (z CSV) i stwierdzenie, że ukończenie zajmuje bardzo dużo czasu.poprawa wydajności pliku danych obciążenia mysql
Podstawowym typem klucza jest UUID, a klucze są nieposortowane w plikach danych.
mam podzielić plik danych do plików zawierających 100000 rekordy i zaimportować go jako:
mysql -e 'ALTER TABLE customer DISABLE KEYS;'
for file in *.csv
mysql -e "SET sql_log_bin=0;SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;
SET AUTOCOMMIT=0;LOAD DATA INFILE '${file}' INTO TABLE table
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; COMMIT"
to działa dobrze przez pierwsze kilkaset tysięcy rekordów, ale wtedy czas wkładka dla każdego kolejnego ładunku wydaje się utrzymać rośnie (od około 7 sekund do około 2 minut na obciążenia przed Zabiłem ją.)
biegnę na maszynie z 8 GB pamięci RAM, a ustawione parametry InnoDB do:
innodb_buffer_pool_size =1024M
innodb_additional_mem_pool_size =512M
innodb_log_file_size = 256M
innodb_log_buffer_size = 256M
Próbowałem też załadować pojedynczy plik CSV zawierający wszystkie wiersze bez powodzenia - to trwało ponad 2 godziny, zanim je zabiłem.
Czy jest coś jeszcze, co mogłoby przyspieszyć ten proces, ponieważ wydaje się, że jest to zbyt długi czas na załadowanie tylko 12-metrowych rekordów?
[WYŁĄCZ KLAWISI nie działa w InnoDB] (http://serverfault.com/questions/291100/with-mysql-how-long-does-an-alter-table-disable-keys-statement- ostatnie), odpowiedzi na temat zrzucania i dodawania indeksów wtórnych są dobre. – KCD
Nie można wyłączyć "KLUCZA PODSTAWOWEGO". Lub, jeśli możesz, "naprawa" będzie kosztować strasznie długo. –