Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przeciążony mysql.
yacoos
post
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
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.
Go to the top of the page
+Quote Post
pafka
post
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
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
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
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.. (IMG:http://forum.php.pl/style_emoticons/default/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
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
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 7.10.2025 - 04:24