Czy MySQL obsługuje zmaterializowane widoki?

Czy MySQL obsługuje zmaterializowane widoki?
We współczesnym świecie prędkość jest kluczowa. Budując aplikacje i oprogramowanie z bazą danych, potrzebujemy szybkiego dostępu do danych w jak najbardziej minimalnym czasie. W tym celu wdrażamy różne miary bazy danych, w tym zmaterializowane widoki.

Jednak w przeciwieństwie do bazy danych PostgreSQL lub Oracle, MySQL nie natywnie obsługuje zmaterializowane widoki, co może być ogromną wadą. To jednak nie jest powód, aby przestać używać MySQL, ponieważ jest to świetna baza danych dla głównych aplikacji.

W tym samouczku szybko omówimy, jakie są zmaterializowane poglądy, jak działają, przypadki, w których mają zastosowanie i jak wdrożyć zmaterializowane poglądy w MySQL.

NOTATKA: Zakładam, że masz podstawową wiedzę mysql przed zanurzeniem się w tym przewodniku.

Jakie są zmaterializowane widoki?

Zateratyzowane widoki są wstępnie obliczonymi wynikami zapytania przechowywanego w tabeli. W przeciwieństwie do standardowego widoku MySQL, zmaterializowany widok nie jest oknem na tabelę bazy danych; przechowuje rzeczywiste dane.

Te typy obiektów są bardzo przydatne, gdy potrzebujesz natychmiastowego dostępu do danych, a regularne zapytanie MySQL zajęłoby trochę czasu na przetworzenie. Dobrym przykładem są przypadki z dużym zestawem danych, który wymaga wielu obliczeń.

Ponieważ zmaterializowane widoki zawierają rzeczywiste dane, wymagają odświeżenia, aby odzwierciedlić wartości zaktualizowane z tego samego zapytania. Odstęp odświeżania dla zmaterializowanego widoku zależy od przechowywanej zawartości i tego, jak szybko zmieniają się dane.

Czy MySQL obsługuje zmaterializowane widoki?

Prostą odpowiedzią jest: nie. W MySQL nie ma jednego polecenia, które możesz uruchomić, aby uzyskać zmaterializowany widok. Na przykład nie możesz wpisać poniższego polecenia i uzyskać to, czego potrzebujesz:

Mysql> Utwórz zmaterializowany widok…

Na szczęście, z kilkoma sztuczkami i narzędziami dostarczanymi natywnie przez MySQL, możemy zaimplementować zmaterializowany widok podobny do jednego natywnie dostarczonego przez PostgreSQL, Oracle i innych.

Jak stworzyć zmaterializowany widok w MySQL

W tej sekcji pokażę ci sposób na wdrożenie zmaterializowanego widoku w MySQL.

NOTATKA: Chociaż ta metoda warsztatów ilustruje sposób utworzenia zmaterializowanego widoku w MySQL, nie będzie idealna we wszystkich bazach danych.

Załóżmy, że mamy schemat o nazwie (MV), który ma tabelę o nazwie Info, używana do przechowywania informacji o sprzedaży, jak pokazano w poniższych zapytaniach:

Utwórz schemat MV;
Użyj MV;
Utwórz informacje o tabeli (
Id int klucz podstawowy auto_increment,
sprzedawca_id int,
_ Data data,
kwota int
);
Wstaw do informacji (Seller_id, _Date, kwota) wartości (101, „2021-01-05”, 200), (111, „2021-01-05”, 600), (121, „2021-02-05”, 1000);

Korzystając z przykładowej tabeli powyżej, możemy utworzyć zmaterializowaną tabelę, która przechowuje informacje o zapytaniu, takim jak ta pokazana poniżej:

Wybierz Seller_id, _date, suma (kwota * 12 * 8) jako total_amount z informacji, gdzie _date < CURRENT_DATE ORDER BY seller_id;

Zapytanie może nie wydawać się skuteczne, biorąc pod uwagę rozmiar bazy danych i informacje przechowywane w powyższej tabeli, ponieważ będą przetwarzane bardzo szybko. Jednak w dużej bazie danych z wieloma informacjami zapytanie takie jak powyższe może zająć trochę czasu na przetworzenie.

W takim przypadku możemy utworzyć zmaterializowany widok do przechowywania informacji z powyższego zapytania, umożliwiając nam szybszy dostęp do informacji, po prostu wybierając je z widoku inaczej niż za każdym razem, używając zapytania surowego.

Aby utworzyć zmaterializowany widok, możemy utworzyć tabelę z wynikami powyższego zapytania:

Utwórz tabelę materializowane_view (
Wybierz Seller_id, _date, suma (kwota * 12 * 8) jako total_amount z informacji, gdzie _date < CURRENT_DATE ORDER BY seller_id
);

Jak odświeżyć zmaterializowany widok

Jak teraz wiesz, zmaterializowany widok zawiera prawdziwe dane; To nie jest migawka stołu.

Oznacza to, że jeśli główna tabela zostanie zaktualizowana, dane w tabeli zmaterializowanego widoku będą wymagały odświeżenia.

Aby odświeżyć zmaterializowany widok, możemy użyć procedury pokazanej poniżej:

Separator $$
Utwórz procedurę Refresh_Materialv (
Out Dev int
)
ZACZYNAĆ
Tabela skrócona materializowana_view;
Włóż do materaseded_view
Wybierz Seller_ID, _Date, suma (kwota * 12 * 8) jako total_amount
Z informacji
Gdzie _date wybierz * z materializowanego_view;
+-----------+------------+--------------+
|. sprzedawca_id | _Date | total_amount |
+-----------+------------+--------------+
|. 101 | 2021-01-05 | 172800 |
+-----------+------------+--------------+

Następnie spróbuj zaktualizować dane przechowywane w głównej tabeli jako:

Wstaw do informacji (Seller_id, _Date, kwota) wartości (101, „2021-01-05”, 200), (111, „2021-01-05”, 600), (121, „2021-02-05”, 1000), („131”, „2021-01-05”, 6000), („141”, „2021-01-05”, 1400);

Na koniec spróbuj zaktualizować dane Tabela Materiatyzed_View za pomocą procedury, którą utworzyliśmy powyżej.

Call Refresh_materialv (@Dev);
Wybierz * z materaseded_view;

To wyświetla wartości w zaktualizowanej tabeli wyświetlania zmaterializowanego.

Wniosek

W tym samouczku omówiono, jakie są zmaterializowane poglądy, jak działają i jak możesz je wdrożyć podczas korzystania z MySQL. Zastanów się nad praktykowaniem koncepcji nauczanych w tym samouczku, aby opanować pracę z zmaterializowanymi poglądami.