Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wolne dzialanie bazy przy kilku tys. zapytan na sekunde
bloker
post 20.01.2009, 21:06:25
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.01.2009

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


Witam.

Mam kilka tysiecy zapisow/odczytow na tabeli. Dysk pracuje bez zarzutów. Co zrobic, by baza dzialala optymalniej? Bo chodzi strasznie wolno...

Z gory dziekuje za odpowiedz!
Go to the top of the page
+Quote Post
prond
post 20.01.2009, 21:35:22
Post #2





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


Sprawdź, czy za każdym jest otwierane nowe połączenie do bazy. Ta operacja jest niestety kosztowna w przypadku postgresa, dlatego warto trzymać cały czas otwarte połączenie.
Pomocnym rozwiązaniem jest tutaj pgpool.

Kolejna kwestia to autocommit. Jeżeli robisz po kolei wiele insertów zapakuj je pomiędzy polecenia BEGIN i COMMIT.

Daj znać, czy jest poprawa. Zobaczy się co dalej.


--------------------
--------------------------------------------------------------------------------
weblog.axent.pl
--------------------------------------------------------------------------------
Go to the top of the page
+Quote Post
bloker
post 20.01.2009, 21:48:03
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.01.2009

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


Sa to pojedyncze uruchamiane pliki php z zapytaniami, tylko tych zapytan jest wiele... ramu 6 GB wolnego 3 procki w 60% wolne...

Zatyka się po przy wiekszym ruchu (liczba procesow apache nie rosnie, ale rosnie liczba procesow bazy)

Wyglada jakby byla bariera co do jednoczesnych odczytow/zapisow z tabeli...

Naprawde nie wiem co jest :/

EDIT: zwiekszenie o 10% ruchu do bazy prowadzi do tego, ze tworzy się wiele polaczen i kazde stoi

Ten post edytował bloker 20.01.2009, 21:51:00
Go to the top of the page
+Quote Post
c3zi
post 21.01.2009, 09:26:07
Post #4





Grupa: Zarejestrowani
Postów: 266
Pomógł: 20
Dołączył: 15.11.2006
Skąd: Koszalin

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


Spróbuj użyć funkcji mysql_pconnect.
Otwiera stałe połączenie z bazą.

Ten post edytował c3zi 21.01.2009, 09:29:00


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

Go to the top of the page
+Quote Post
bloker
post 21.01.2009, 10:44:43
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.01.2009

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


Hmmm... byloby to dosc niestosowne, ponieważ obsługuję dość poważny serwis i statystycznie:

- odwolan do skryptu jest okolo 3/4 mln na godzinę
- około 100 UU na sekundę otwierałoby polaczenie z bazą (wiec po chwili mialbym ok 5tys otwartych połączeń)

Przy takiej ilości odwołań: procek, dysk, pamięć wszystko działa super... ale baza nie wyrabia. W jaki sposób mogłbym zoptymalizować bazę?
Go to the top of the page
+Quote Post
c3zi
post 21.01.2009, 11:18:49
Post #6





Grupa: Zarejestrowani
Postów: 266
Pomógł: 20
Dołączył: 15.11.2006
Skąd: Koszalin

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


Przecież mysql_pconnect nie nawiązuje nowego połączenia, jeśli już istnieje. To jest jedna z różnic między mysql_connect.
Dodatkowo przy takiej ilości zapisu/odczytu przeydałby się pożądny dysk.


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

Go to the top of the page
+Quote Post
bloker
post 21.01.2009, 12:06:53
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.01.2009

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


Wg statystyk dysk zapis/odczyt nie jest obciążony nawet w 2% ... a nie mogę utrzymywać 3000 połączen (isntiejących procesów) - zbyt duże obciązenie systemu (6GB RAMu nie wystarczy smile.gif )
Go to the top of the page
+Quote Post
Zbłąkany
post 21.01.2009, 19:53:01
Post #8


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

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


@bloker:
zajrzyj tutaj i pobaw się tymi ustawieniami smile.gif Dodatkowo sprawdziłbym strukturę bazy danych, relację, itp. Może warto zrobić optymalizację bazy? Nie masz czasem jakiegoś wyzwalacza ustawionego przy tych zapytaniach?
@c3zi:
czy ty umiesz czytać ze zrozumieniem?


--------------------
Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox
Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..."
Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL"
Go to the top of the page
+Quote Post
prond
post 23.01.2009, 14:53:32
Post #9





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


Jeszcze jedna rzecz przyszła mi do głowy.
Spróbuj wymusić nestedloops - to wolniejszy algorytm łączenia tabel,
ale na pewno mniej obciąża zasoby komputera.


--------------------
--------------------------------------------------------------------------------
weblog.axent.pl
--------------------------------------------------------------------------------
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: 23.06.2025 - 06:59