![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]() ![]()
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 |
|
|
![]()
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 )
|
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]()
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.. ![]() Czyli index nic nie dal, chyba ze jakos zle go zrobilem.. Ten post edytował yacoos 15.12.2005, 19:14:10 |
|
|
![]() ![]()
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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 04:49 |