Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> pobranie z bazy czy z sesji, porównanie dwóch rozwiązań
AxZx
post 26.11.2008, 23:56:51
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


witam,

chciałbym się poradzić, które rozwiązanie będzie korzystniejsze. nie chcę nic przeoczyć, a co dwie głowy to nie jedna:)

w moim serwisie zalogowany użytkownik może dodawać innych do ulubionych. chciałbym, żeby w zależności od tego czy dany użytkownik jest już dodany do ulubionych był widoczny link dodaj do ulubionych albo informacja, że ta osoba jest w ulubionych.
jak to sprawdzić?

ja mam w głowie 2 rozwiązania:
za każdym razem po wejściu na profil sprawdzać w bazie.
drugie rozwiązanie jest trochę bardziej skomplikowane, bo wymaga więcej operacji. podczas logowania pobierane są z bazy ID ulubionych użytkowników i zapisywane w sesji jako tablica. przy każdym wejściu na jakiś profil sprawdzana jest ta tablica z sesji. w przypadku gdy użytkownik zostanie dodany do ulubionych tablica ta musi zostać zmodyfikowana.

które rozwiązanie będzie lepsze jeżeli chodzi o wydajność? bo jeżeli mam patrzeć na łatwość implementacji to wybieram rozwiązanie pierwsze, dokładam tylko jedno zapytanie.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
mike
post 27.11.2008, 00:11:27
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Odpowiedz sobie na pytanie: A jak często użytkownik będzie wchodził do profilu?
Go to the top of the page
+Quote Post
legorek
post 27.11.2008, 00:12:37
Post #3





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


Pierwsze jest prostsze w implementacji i szybsze.

Dane sesji przecież są trzymane zazwyczaj na dysku lub w bazie, więc tak czy siak musi być wykonany odczyt.

Jakbyś chciał sobie odciążyć bazę to musiałbyś te dane w ciasteczkach trzymać, co IMHO jest bez sensu.

Ten post edytował legorek 27.11.2008, 00:16:35


--------------------
Go to the top of the page
+Quote Post
AxZx
post 27.11.2008, 00:23:35
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


Cytat(mike @ 27.11.2008, 00:11:27 ) *
Odpowiedz sobie na pytanie: A jak często użytkownik będzie wchodził do profilu?


raczej często. a ma to jakieś znaczenie? przy każdym wejściu musi być wykonane dodatkowe jedno zapytanie lub przy drugim rozwiązaniu odczyt z pliku (z sesji).


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
legorek
post 27.11.2008, 02:22:02
Post #5





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


Naprawdę nie masz co kombinować. Zakładając że tabela ma strukturę zawierającą dwa pola user_id, ulubiony_user_id to zapytanie jest tak mało zasobożerne, że nie widzę powodów dla szukania czegoś w zastępstwie. Nie wykonujesz żadnych złączeń, transfer między bazą a php jest znikomy, a warunek wyszukiwania operuje na indeksie. Wydaje mi się, że jakiekolwiek inne operacje potrwają dłużej.


--------------------
Go to the top of the page
+Quote Post
AxZx
post 27.11.2008, 10:38:08
Post #6





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


skoro tak mówisz:)

a tak przy okazji, to ile zapytań jest powiedzmy w normie?
16 zapytań to nie jest lekka przesada?


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
erix
post 27.11.2008, 12:49:39
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Hmm, kwestia sporna, ale IMHO wydaje mi się, że trochę za dużo... To naprawdę zależy od tego, jakie zapytania wykonujesz i jak masz pozakładane indeksy.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Cysiaczek
post 27.11.2008, 12:50:31
Post #8





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




To ie hydepark - przenosze na php
16 to norma smile.gif


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
nospor
post 27.11.2008, 12:58:10
Post #9





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




Cytat
16 to norma
Moze w joomli...


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

"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
erix
post 27.11.2008, 12:59:47
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




16 może norma, ale widać, że za mało cache'ujesz. tongue.gif


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
AxZx
post 27.11.2008, 13:16:50
Post #11





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


jeszcze w Symfony nie doszedłem do tego jak robić cache dla pojedyńczych zapytań;) a całego widoku nie mogę zapisywać w cache bo dla każdego zalogowanego użytkownika może to wyglądać inaczej.

a w Joomli 16 zapytań to jest chyba wtedy gdy nie dorzuci się do niej więcej dodatków.

ja mam między innymi 6 zapytań, które tylko liczą, indeksy pozakładane na kolumnach z warunków.
zobaczymy w praktyce jak to będzie wyglądać:)


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
nospor
post 27.11.2008, 13:22:19
Post #12





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




Cytat
ja mam między innymi 6 zapytań, które tylko liczą,
czasami takie 6 zapytan mozna zastapic jednym - zależy co liczą winksmiley.jpg


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

"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
AxZx
post 27.11.2008, 13:44:03
Post #13





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


Cytat(nospor @ 27.11.2008, 13:22:19 ) *
czasami takie 6 zapytan mozna zastapic jednym - zależy co liczą winksmiley.jpg


tak, wiem o tym:)
ale gorzej jak są one porozrzucane w kilku miejscach aplikacji:)
czasem są wykonywane tylko 2, a czasem właśnie te 6. nie zawsze można je połączyć.
ale co się da to połączę:)
tylko zastanawiałem się czy rzeczywiście to wpłynie pozytywnie na wydajność.

np. 2 zapytania
  1. SELECT count(idkontakt) FROM kontakt WHERE idprofil = 23
  2. SELECT count(idulubione) FROM ulubione WHERE idprofil = 23

vs. jedno
  1. SELECT (SELECT count(idkontakt) FROM kontakt WHERE idprofil = 23) AS kontakt, (SELECT count(idulubione) FROM ulubione WHERE idprofil = 23) AS ulubione


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
erix
post 27.11.2008, 13:46:53
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
ale gorzej jak są one porozrzucane w kilku miejscach aplikacji:)
czasem są wykonywane tylko 2, a czasem właśnie te 6. nie zawsze można je połączyć.
ale co się da to połączę:)

A stored procedures?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
nospor
post 27.11.2008, 13:48:15
Post #15





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




Cytat
tylko zastanawiałem się czy rzeczywiście to wpłynie pozytywnie na wydajność.
Tak.
Przy dwoch zapytaniach musisz doliczyc chociazby dwukrotny czas wyslania ządania do mysql i spowrotem. Przy jednym masz tylko jedno.
Akurat osobiscie twoje dwa zapytania zastąpilbym jednym union.


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

"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: 26.06.2025 - 21:11