Paweł Sokołowski - Eline Opublikowano 19 Września 2012 Udostępnij Opublikowano 19 Września 2012 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Veal Opublikowano 19 Września 2012 Udostępnij Opublikowano 19 Września 2012 Zazwyczaj jedno duże zapytanie jest szybsze ale nie da się jednoznacznie odpowiedzieć bez przeanalizowania konkretnego przypadku. Na emeryturze po SEO zajmuję się R&D. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mion Opublikowano 19 Września 2012 Udostępnij Opublikowano 19 Września 2012 @, a nie mam jak tego testowac Doprawdy 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 Więcej opcji udostępniania...
Paweł Sokołowski - Eline Opublikowano 19 Września 2012 Autor Udostępnij Opublikowano 19 Września 2012 @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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mion Opublikowano 19 Września 2012 Udostępnij Opublikowano 19 Września 2012 @@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 Więcej opcji udostępniania...
Paweł Sokołowski - Eline Opublikowano 19 Września 2012 Autor Udostępnij Opublikowano 19 Września 2012 Już testy trwają Dzięki Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mion Opublikowano 19 Września 2012 Udostępnij Opublikowano 19 Września 2012 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 Więcej opcji udostępniania...
Paweł Sokołowski - Eline Opublikowano 19 Września 2012 Autor Udostępnij Opublikowano 19 Września 2012 wiem, juz mam nowe tabele Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
INOMan Opublikowano 20 Września 2012 Udostępnij Opublikowano 20 Września 2012 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 Więcej opcji udostępniania...
Mion Opublikowano 20 Września 2012 Udostępnij Opublikowano 20 Września 2012 Dlatego czasem dobrze usunąć indeksy przed setkami tysięcy insert/update i odtworzyć po tych operacjachTylko, ż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 Więcej opcji udostępniania...
INOMan Opublikowano 20 Września 2012 Udostępnij Opublikowano 20 Września 2012 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Zarchiwizowany
Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.