Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wydajność widoków, jak to działa mniej więcej
athabus
post
Post #1





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

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


Witam,

Piszę właśnie nowy projekt, a że na serwerze roboczym mam dostęp do mysql 5 to zacząłem się poważnie zastanawiać nad użyciem widoków.

Generalnie wiem do czegą służą i jak ich używać - pracowałem już z widokami na PG, ale jedna rzecz nie daje mi spokoju - czy widoki są wydajne. Kiedyś gdzieś czytałem, że widok działa w ten sposób, że po prostu przed wykonaniem zapytania na widoku zostje wywołane zapytanie tworzące ten widok. Zakładam, że jest to duże uproszczenie i w grę wchodzi jakieś cachowanie itp. Bo gdyby tak było jak napisałem, to widoki nie byłyby zbyt wydajne - łączenie całych tabel by odczytać wynik jakiegos prościutkiego zapytania - koszmarek.

Zatem może ktoś się orientuje jak wygląda z efektywnością wykorzystywania widoków - czy warto z nich korzystać i jak to w ogóle działa (w sensie od podszewki) - czy są jakieś ogólne zasady kiedy warto używać widoków, a kiedy tego nie robić.

edit - może lepszym miejscem byłoby ogólen forum baz danych bo wprawdzie pytam o MySql, ale widoki to bardziej ogólen pojęcie.

Ten post edytował athabus 20.08.2006, 18:14:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
athabus
post
Post #2





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

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


Trochę poczytałem na forum mySql i wnioski są takie:
- widoki w przypadku prostych zapytań wykonywanych na widoku nie obniżają wydajności bazy - plusem jest tu oczywiście uproszczenie dostępu do danych. Kilka osób skrażyło się jednak, że przy bardziej skomplikowanych zapytaniach na widoku mySql ma tendencję do spadku efektywności w stosunku do porównywalnego zapytania dla wielu tabel.

- rozmawiałem też z osobą która ma MCP z MSSQL i na tej bazie polecają robienie widoków - wynika to ze specyfiki tego silnika - tam widoki w większości przypadków (mowa o najnowszym serwerze) dają wzrost wydajności (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) . Szczególnie dobre rezultaty dają widoki tworzone dla złożeń z wielu tabel, na których są zakładane klucze pod kontem konkretnych zapytań. Nie wiem jednak jak to wygląda w mySql.

- ta sama osoba, mówiła, że jednak procedury i tak są wydajniejsze od widoków, także w optymalizacji jeszcze lepiej stosować procedury (ale to raczej było do przewidzenia).

Wniosek ogólny - w mysql raczej widoki powodują obniżenie wydajności (choć może zdarzyć sie konkretna sytuacja w której widok może poprawić wydajność - na formu znalazłem opinię osoby, która twierdzi, że w przypadku algorytmu TempTable może zwiększyć się wydajność). Plusem jest tu napewno to, że wbrew moim pierwotnym przypuszczeniom działanie widoków w mysql daje relatywnie mały spadek wydajności przy prostych zapytaniach kierowanych do widoku. Generalnie przeważa jednak opinia, że widoki warto stosować dla "klarowności" kodu/dostępu do danych - jeśli kluczowa jest wydajność lepiej zrezygnować z widoków (i stosować procedury).

Zaciekawiła mnie sprawa MSSQL i wydajności widoków - no ale to zupełnie inna klasa bazy danych.

Wniosek końcowy - widoki mysql mają 2 algorytmy tworzenia i wiele opcji dodatkowych - przy umiejętnym stosowaniu spadek wydajności może być znikomy - ewentualnie może być nawet mały wzrost wydajności w sprzyjających warunkach - trzeba więc dobrze wiedzieć co się robi. A myślałem, że widoki są proste (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

* wszystko powyżej to rozważania teoretyczne nie poparte żadnym doświadczeniem w tej kwesti z mojej strony więc mogą to być po prostu wierutne bzdury (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Ten post edytował athabus 21.08.2006, 16:42:20
Go to the top of the page
+Quote Post

Posty w temacie


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: 15.10.2025 - 08:58