Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Python :Co jest nie tak z moim kodem wieloprocesowym wstawianym do MySQL?

Tak, jeśli wstawiasz zbiorczo 300 milionów wierszy do tej samej tabeli, nie powinieneś próbować zrównoleglać tego wstawiania. Wszystkie wstawki muszą przejść przez te same wąskie gardła:aktualizowanie indeksu i zapisywanie do fizycznego pliku na dysku twardym. Operacje te wymagają wyłącznego dostępu do podstawowych zasobów (indeks lub głowica dysku).

W rzeczywistości dodajesz trochę bezużytecznych narzutów na bazę danych, która teraz musi obsługiwać kilka jednoczesnych transakcji. To zużywa pamięć, wymusza przełączanie kontekstu, sprawia, że ​​głowica odczytu dysku cały czas przeskakuje i tak dalej.

Wstaw wszystko do tego samego wątku.

Wygląda na to, że faktycznie importujesz dane z pewnego rodzaju pliku CSV. Możesz użyć wbudowanego LOAD DATA INFILE Polecenie MySQL, przeznaczone właśnie do tego celu. Opisz swój plik źródłowy, jeśli potrzebujesz pomocy w dostrojeniu tego polecenia.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Problem z przechowywaniem wartości szerokości i długości geograficznej w bazie danych MySQL

  2. Jak załadować konfigurację JDBC z przykładowego pliku właściwości

  3. szukaj z wielu tabel za pomocą jednego słowa kluczowego w mysql

  4. Zapytanie MySQL, aby znaleźć najbardziej podobny wiersz liczbowy

  5. Jak zwiększyć liczbę wystąpień wartości kolumny w MySQL?