Potrzebuję wstawić miliony wierszy do bazy danych MySQL (silnik InnoDB). Mam problem z czasem, kiedy stoły mają duże rozmiary. Prawie cały czas poświęca się na wstawianie zapytań. Może ktoś wie, jak ją zoptymalizować?Jak zoptymalizować MySQL, aby wstawić miliony wierszy?
Odpowiedz
celu importowania dużą objętość danych do InnoDB:
ustawiana w konfiguracji MySQL
- innodb_doublewrite = 0
- innodb_buffer_pool_size = 50% + pamięci systemowej
- innodb_log_file_size = 512m
- log-bin = 0
- innodb_support_xa = 0
- innodb_flush_log_at_trx_commit = 0
Dodaj zaraz po rozpoczęciu transakcji:
SET FOREIGN_KEY_CHECKS = 0;
USTAW UNIQUE_CHECKS = 0;
SET AUTOCOMMIT = 0;
ustawiona tuż przed końcem transakcji:
SET UNIQUE_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;
Te optymalizacje po prostu zabrały mi zrobienie 10.000 rekordów co 10 minut do 500 000 rekordów, imponujące. – input
Ustaw również "sync_binlog = 0", jeśli jest ustawione na "1" (domyślnie "0") – zogby
@zogby z loglogiem 'log_bin = 0' jest całkowicie wyłączone, więc' sync_binlog = 0' nie robi różnicy. – c2h5oh
Jeśli mówisz o dużej liczbie instrukcji INSERT
, spójrz na coś zwane transakcjami. Jestem całkiem pewien, że większość (jeśli nie wszystkie) języki obsługują transakcje SQL. Przyspieszą wszystko, co wiąże się z pisaniem do DB. Dodatkową korzyścią jest to, że jeśli coś pójdzie nie tak, możesz wycofać zmiany.
Już korzystam z transakcji :) –
- 1. Jak wstawić dużą liczbę wierszy w MySQL?
- 2. Zapytania NoSQL i Ad Hoc - Miliony wierszy
- 3. Jak zoptymalizować to w MySQL?
- 4. Jak mogę zoptymalizować zapytanie MySQL o aktualizację?
- 5. Jak przekazać tablicę wierszy do PDO, aby je wstawić?
- 6. mysql wybierz z ostatnich wierszy
- 7. MySQL - ile wierszy mogę wstawić w jednej instrukcji INSERT?
- 8. Wstawianie wielu wierszy w mysql
- 9. Speedup konwersja 2 miliony wierszy nieaktualne ciągów POSIX.ct
- 10. Jak wstawić słowniki ostatnio wierszy pandy DataFrame
- 11. Jak mogę wstawić 100000 wierszy do MSSQL?
- 12. wstawić wiele wierszy w SQLite
- 13. MySql wstawić wyniki wybranej
- 14. Jak zhakować MySQL GROUP_CONCAT, aby pobrać ograniczoną liczbę wierszy?
- 15. 30 milionów wierszy w MySQL
- 16. Korzystanie skrypt aby wstawić dane do bazy danych MySQL zdalnego
- 17. PHP - Aby wstawić dane z formularzy checkbox do MySQL
- 18. Jak zoptymalizować zapytania MySQL na podstawie EXPLAIN planu
- 19. Jak wstawić wartość dla kolumny bitowej mysql
- 20. Jak wstawić dane z mysql do combobox?
- 21. Jak wstawić dane tablicy do tabeli mysql
- 22. Jak wstawić język hindi w MySQL
- 23. Jak wstawić moment JS do MySQL
- 24. MySql uzyskać liczbę wierszy
- 25. Chcę, aby zoptymalizować tę krótką pętlę
- 26. Jak wstawić wiele wierszy w bazie danych mysql jednocześnie z przygotowanymi instrukcjami?
- 27. Jak zoptymalizować zapytanie w mysql przy użyciu klauzuli "grupuj według"?
- 28. Wstawianie wielu wierszy z jednym zapytaniem MySQL
- 29. Jak szybciej wstawić 4 miliony rekordów z Oracle do tabeli Elasticsearch przy użyciu C#?
- 30. MySQL: Jak zaktualizować 50% wierszy, losowo wybranych?
jakie jest twoje zapytanie? –
Co masz na myśli? –
Wszelkie inne operacje wykonywane na stole podczas wstawiania danych? – Kermit