Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Widoki vs cache
athabus
post
Post #1





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Witam, pracuje właśnie nad projektem sklepu internetowego. Opieram się tu o Symfony (Propel jako ORM). Mam dość skomplikowaną strukturę tabel z produktami, której raczej nie da się już uprościć - ogólnie instancja produktu tworzona jest z wielu tabel gdzie joiny są 2-3 stopniowe tj. tabela a join tabala b join tabela c itd. Ogólnie kluczowe zapytania są na tyle złożone, że mam do wyboru 2 opcje:
- stworzyć dodatkową tabelę z cachem produktów gdzie są dostępne wszystkie potrzebne pola
- stworzyć widok

Z perspektywy utrzymania tego kodu lepiej jest zrobić widok - nie będę musiał powielać operacji zapisu itd. Z drugiej strony cache ma ta przewagę, że jest szybszy w odczycie. No i tu pojawia się właśnie problem - na ile widok oparty na dość złożonym zapytaniu sql łączącym około 6-7 tabel i zawierającym około 20-25 pól będzie obciążeniem dla bazy. Czy taki widok jest cachowany w jakiś sposób czy raczej zapytanie jest wywoływane za każdym razem od nowa? Boję się, że widok przy większym obciążeniu może dać się we znaki. Macie z tym jakieś doświadczenia.

pozdrawiam i z góry dzięki za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
mike
post
Post #2





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

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


Cytat(athabus @ 30.05.2008, 12:14:38 ) *
Czy taki widok jest cachowany w jakiś sposób czy raczej zapytanie jest wywoływane za każdym razem od nowa? Boję się, że widok przy większym obciążeniu może dać się we znaki. Macie z tym jakieś doświadczenia.
Masz na myśli zapytanie tworzące widok? Nie, nie jest wykonywane za każdym razem. Widoki to obiekty, które są cacheowane.
Pamiętaj, że widoki powstały w końcu, żeby pomagać a nie szkodzić.

Ja na Twoim miejscu postawiłbym w pierwszej kolejności na widok. Jeśli będziesz chciał całość obwarować dodatkowo mechanizmem cacheu to nic nie będzie stało na przeszkodzie by połączyć te dwa rozwiązania.
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


sprawdz czy zapytanie tworzące twoj view, bedzie uzywalo kluczy, jesli tak to wszystko w normie. jesli nie to masz problem, proponuje pgsql:)
Go to the top of the page
+Quote Post
Loozak
post
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 31.12.2003
Skąd: Bielsko-Biała

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


W mysql widoki nie zawsze są optymalnym rozwiązaniem - polecam lekturę http://www.mysqlperformanceblog.com/2007/0...e-troublemaker/
Go to the top of the page
+Quote Post
athabus
post
Post #5





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Czytałem właśnie dzisiaj ten artykuł i trochę mnie źle nastroił ;-( Zwłaszcza, że optymalizacja BD nie jest moją silną stroną. Trochę się boję, że w pewnym momencie wszystko "padnie i nie wstanie" bo ogólnie struktura musi być elastyczna a zarazem dużo oferować przez co niektóre zapytania są dość złożone.

Ale chyba zrobię tak jak mówi mike - spróbuję oprzeć wszystko o widoki, wypełnię tabelę danymi docelowymi i zrobię testy. Jeśli pojawią się problemy to najwyżej przejdę na opcję z cachowaniem - stracę 2-3 dni a przynajmniej będę miał trochę doświadczeń.

ActivePlayer - zastanawiałem się nad PG, ale trochę boję się tej bazy. Chyba pora kupić jakąś cegłę i usystematyzować trochę wiedzę ;-)
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 Aktualny czas: 19.08.2025 - 04:58