Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mysql optymalizacja
Forum PHP.pl > Forum > Bazy danych > MySQL
Qss
Witam,

Dziś kieruj pytanie do tych doświadczonych jak zoptymalizować bazę.
problem jest taki że istnieje sobie strona która do wygenerowania jednej strony potrzebuje 400-700 zapytań są to głównie proste SELECT z WHERE.
i czy optymalnie jest wysłać powiedzmy 50 takich pojedynczych zapytań czy zrobić to na zasadzie WHERE IN(...)..ORDER i resztę operacji wykonać po stronie PHP?

Połączenie z mysql jest stałe (do tego mysql nie mysqli), nie wiem czy to najlepszy pomysł. Do tego dochodzi jeszcze AJAX/SOCKET który odpytuje bazę co jakieś 5s, oczywiście w znacznie mniejszej ilości zapytań.
Przy 2k osób w jednym momencie na stronie zaczynają się poważne lagi.

Czy można jakoś zasymulowac na localhoscie takie obciążenie i w jaki sposób wtedy znaleźć wąskie gardło?

bobek358
A może po prostu zastosowanie zwykłych left join załatwi sprawę, bo domyślam się, że te 400-700 zapytań generuje pętla zapytania mysql, która odpytuje w sobie bazę o inne rzeczy?

Sam osobiście mam teraz pod opieką taki duży system, napisany w podobny sposób. Optymalizacja tego jest czasochłonna i po prostu, zwiększyliśmy zasoby serwerowe dla tego projektu i jest ok.
nospor
@Bobek z opisu podane przez autora wynika bardziej, ze ma on iles tam IDkow i dla kazdego pokolei robi zapytanie.
Ale to tylko gdybanie, najlepiej by bylo jakby autor uraczyl nas konkretnym kodem to mozna by wtedy cos moze i pomoc.

ps: czasami probuje sobie wyobrazic co myslal programista, ktory pisal takie rzeczy, ale nie potrafie.... wink.gif
bobek358
@nospor chodzi Ci o zapytania do mysql w pętli?
Hm ostatnio miałem okazję się przekonać, że nie jest to takie "głupie" bo była pętla która jechała się 1000 razy i wykonywała po kilka zapytań wewnątrz. Tabele były typu MyISAM.
Wszystko ładnie działało, aż przepisałem to na jedno zapytanie, które wykonywało się 10 s i blokowało te tabele - czas zapytania nie jest tutaj problemem bo to robił cron, ale użytkownicy mieli na 10 s zablokowany dostęp do tabel. Wiadomo wystarczy zmiana na silnik InnoDB ale jeśli ktoś chce pozostać przy MyISAM to jest to jakieś wyjście:P

Oczywiście to, że nie jest to taki głupie to z przymrużeniem oka wink.gif
nospor
Metode nalezy dobrac do sytuacji. W jednej sytuacji sprawdzi sie jedna, w innej druga. Dodatkowo trzeba tez umiejetnie uzyc danej metody, bo moze sie okazac ze metoda jest ok, tylko jej uzycie juz nie koniecznie wink.gif

Dlatego poczekajmy na kod od autora.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.