Wpis z mikrobloga

#webdev #mysql #php #bazydanych #bigdata #smalldata

Tylko 160k rekordów, a dedyk to #!$%@? mać liczy i liczy...

Może to wina fgetcsv? Nie mam ustawionego $length (w sensie na zero)?

Nic ciekawego nie robię w sumie. Hmm, może lepiej zrobić decydowanie o update/insert na poziomie bazy, bo teraz robię tak, żeby wiedzieć czy zedytowano rekord, bo MySQL wyrzuca 0 gdy nie aktualizuje danych bo są takie same:

1. Select

2.a Update lub

2.b Insert

Czyli mam defacto 320tys. zapytań. A zajmuje to tragiczną ilość czasu.

Mógłby ktoś coś podpowiedzieć ;)
  • 9
@prezes_n: oprócz wielowątkowości przeglądnij jakimś profilerem zapytania jakie idą i przeanalizuj je pod kątem wydajności, dodatkowym plusem do performance będzie odpowiednie indeksowanie tabel, mi to pomogło z kwerendki, która miała kilka left i inner joinów wykonywującej się na 200k+ rekordów w ponad 2 minuty zjechałem do 14 sekund. Polecam Ci tę prezentację, na której uczyłem się indeksowania
@prezes_n: Ło chłopie....Po pierwsze to importując z pliku użyj LOAD by załadować całość do staging table a następnie baw się wewnątrz bazy. Po drugie: Potrzebna ci wiedza które konkretnie wiersze zostały zmienione? Jak nie to trzaśnij UPSERT w jednym poleceniu (ewentualnie podziel na batche po parę k wierszy).