![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 08:58 |