Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przeciążony mysql.
yacoos
post 14.12.2005, 01:21:22
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 19.02.2005

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


Witam,
Mam problem z dość sporym serwisem, który generuje koszmarne obciążenie na sererze (poprzez mrocesy mysqla).
Juz podaję więcej szczegółów ktore udalo mi sie włowić.
Na serwis wchodzi ok 5-6tys unikalnych gosci na dobę.
Juz po chwili od udostepnienia serwisu load serwera niesamowicie rosnie a mysql polyka pamiec starsznie szybko.
Strukttura bazy z ktorej korzysta serwis jest bardzo toporna.. Głowna tabela zawiara ponad 30tys rekordow i wazy ponad 2mb.
Po wykonaniu 'show proccesslist' w 90% przypadkow widac 2 lub 3 zapytania z duza iloscia OR wnajdujacch sie w sekcji WHERE.. czy to moze byc przyczyna tak starsznego spowalniania.. ?

Czy zrzerobienie bazy w celu wyeliminowanie 'OR'ow mogloby rozwiazac problem?
Ewentualnie jakie sąmetody żeby dokladnie zdiagnozować co powoduje ten problem.

Pozdrawiam i bardzo proszę o odpowiedz.
yacoos
Go to the top of the page
+Quote Post
Sh4dow
post 14.12.2005, 10:58:23
Post #2





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


zoptymalizuj te zapytania, napisz je jakos inaczej lub tez rozbij moze na mniejsze. Staraj sie nie uzywac OR strasznie spowalnia zapytania.
Liczba 2-3 tys unikalnych wejsc na dobe to nie jest ilosc ktora mogla by tak obciazyc przecietnie zbudowana baze, a napewno nie z tak małą iloscia danych.
Pracuje na duzo wiekszych bazach z mysqlem i o parokrotnie przewyzszajacej ilosci unikalnych wejsc (chociaz raczej powinno sie tutaj brac pod uwage odslony bo one generuja zapytania)
Pokaz zapytania moze cos sie uda rozwiazac.


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
pafka
post 14.12.2005, 11:23:03
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 8.01.2005

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


A jeszcze pytanko sie pojawia : czy masz pozakladane indexy na pola po ktorych dokonujesz zapytan ( OR )
Go to the top of the page
+Quote Post
yacoos
post 14.12.2005, 11:29:01
Post #4





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 19.02.2005

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


No właśnie zastanawiam się nad zmianą tych zapytań.. Jednach chciałbym mieć pewność że ta czynność rozwiąże problem - czyli że właśnie to jest przyczyną...
Jak wrócę do domu to postaram się podesłać zapytania...
A czy jest jeszcze jakiś sposób ktorym mogę to zdiagnozować?

PS. Nie.. na polach, korych dostyczy 'OR' nie ma indeksów.. A powinny byc? Jakiego typu?

Pozdrawiam,
yacoos

Ten post edytował yacoos 14.12.2005, 15:03:07
Go to the top of the page
+Quote Post
pafka
post 15.12.2005, 17:41:28
Post #5





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 8.01.2005

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


Co to sa za pola po kotrych dokonujesz porownan ?

Powinny byc, po ta sa indexy zeby przyspieszyc wyszukiwanie, bez indexow baza nie wie gdzie ( w ktorym rekordzie) sa poszukiwane wartosci i wtedy leci od poczatku do konca po calej tablicy i robi porownania
Kiedy masz index zalozony to szybko potrafi sobie zlokalizowac dany rekord bez koniecznosci przeszukiwania calej tabeli.

Pozakladaj indexy i zobacz jak sie zmieni sytuacja.

Zobacz ile dla kazdej strony jest wykonywanych zapytan do bazy, byc moze uda sie zredukowac ich ilosc (polaczyc kilka zapytan w jedno ? itp ...) ? kazde dodatkowe zapytanie to nowe obciazenie dla bazy

Jesli dane w bazie nie sa czesto aktualizowane to moze pomysl o cache'owaniu wygenerowanej strony i/lub o cache'owaniu wynikow z bazy
Go to the top of the page
+Quote Post
yacoos
post 15.12.2005, 18:52:40
Post #6





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 19.02.2005

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


Witam,
Dziękuję za zainteresowanie.
Pola ktorych todtycza te OR'y to 3 pola typu int(11)
Zalozylem na te 3 pola index.. zobacze czy to cos pomoze..

Niestety.. kilkanascie osob w serwisie sie nazbieralo i juz load podskoczyl z 1 do 16.. sad.gif
Czyli index nic nie dal, chyba ze jakos zle go zrobilem..

Ten post edytował yacoos 15.12.2005, 19:14:10
Go to the top of the page
+Quote Post
Sh4dow
post 15.12.2005, 19:51:20
Post #7





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


Sprawdzaj sobie czas wykonywania poszczegolnych zapytan, jesli zobaczysz ze load jest duzy sprawdz processlist co wisi. i pokaz te zapytania moze da sie z nimi cos zrobic


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
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: 13.06.2025 - 04:49