Skocz do zawartości

Mysql INSERT UPDATE - wydajnosc dla duzych ilosci danych


Rekomendowane odpowiedzi

Czy ktos ma doswiadczanie jak wyglada szybkosc dodawania/update duzych ilosci danych (zalozmy 100k urli) w mysql przy zastosowaniu:

1. wielu zapytan (100k zapytan, jedno po drugim)

2. jednego duzego zapytania (konkatencja, zapytanie gdzie jest insert czy update 100k rekordow)

Uzywam tej drugiej formy w tej chwili ze wzgledu na limitu czasu wykonywania php. W drugiej opcji nic nie wchodzi do bazy, w pierwszej wejdzie tyle ile zdola przetworzyc. Ale interesuje mnie tez wydajnosc samych zapytan, a nie mam jak tego testowac ;)

search_auditor_500x80_bf.png

Odnośnik do komentarza
Udostępnij na innych stronach

@, a nie mam jak tego testowac

Doprawdy :olaboga:

Zainteresuj się transakcjami<dla tabel InnoDB> z prawidłowym ustawieniem autocomit

SET AUTOCOMMIT = 0;

START TRANS;

Instrukcje SQL do wykonania

COMMIT;

SET AUTOCOMMIT = 1;

Zapytania można też wczytać z pliku wszystko zależy od uprawnień na serwerze.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

@Mion, co tam mi lata po glowie ze transakcje wymagaja dodatkowych zasobow i jak maja u mnie status jak rand() -> przy duzej ilosci rekordow unikac, ale zajrze do tego co podlinkowales.

zapisywanie query na localhoscie nie jest zlym pomyslem

dla insert jest to dosc latwe, bo uzylbym pliku txt z rekordami i wczytal go przez load data, dla update juz nie bardzo ;)

EDIT: "transakcje" przeczytane, zastosuje

search_auditor_500x80_bf.png

Odnośnik do komentarza
Udostępnij na innych stronach

@@Mion, co tam mi lata po glowie ze transakcje wymagaja dodatkowych zasobow

Poczytaj zatem o mechanizmie transakcji i po co w tym wypadku jest SET AUTOCOMMIT = 0;

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Tylko pamiętaj, że tranzakcie w MySQL nie działają dla tabel MyISAM ;)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

1) Insert / update wykona się o wiele szybciej jedną instrukcją w stylu:

INSERT INTO `tabela` (`pole`, `pole`, ...) VALUES ('wartosc', 'wartosc', ...), ('wartosc', 'wartosc', ...), ('wartosc', 'wartosc', ...), ...

niż pojedynczo każdą instrukcją osobno - podobnie można zrobić z update

2) Czym mniej indeksów posiada tabela tym szybciej operacja się wykona. Dlatego czasem dobrze usunąć indeksy przed setkami tysięcy insert/update i odtworzyć po tych operacjach

3) Jeżeli jesteś nowy jeżeli chodzi o transakcje i innodb to... możesz wpaść w wiele pułapek takich jak deadlock, albo dziwnych sytuacji związanych z multiwersjami danych, zastanów się - jeżeli wszystko chodzi dobrze na MyISAM to po co zmieniać na InnoDB?

Odnośnik do komentarza
Udostępnij na innych stronach

Dlatego czasem dobrze usunąć indeksy przed setkami tysięcy insert/update i odtworzyć po tych operacjach
Tylko, że odtworzenie tych indeksów też będzie czasochłonne, więc ewentualny zysk na czasie może być niewielki.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Wszystko zależy od tego jakie dane, ile ich jest, jakie to są indeksy, czy to będzie ręcznie zdejmowane/odtwarzane czy automatycznie, etc. Więc może być zysk niewielki albo może być dość spory.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności