Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Mysql optymalizacja
Qss
post 18.08.2015, 10:26:50
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


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?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
bobek358
post 18.08.2015, 11:54:53
Post #2





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post 18.08.2015, 11:59:25
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bobek358
post 18.08.2015, 12:05:18
Post #4





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

Ostrzeżenie: (0%)
-----


@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
Go to the top of the page
+Quote Post
nospor
post 18.08.2015, 12:18:22
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 30.06.2025 - 05:15