Материализираните изгледи ви позволяват да съхранявате физически резултати от сложни заявки и да ги актуализирате периодично. Така че те са полезни в случаите, когато имате нужда от бърз достъп до данни за отчитане и бизнес разузнаване. Ето как да създадете материализиран изглед в PostgreSQL.
PostgreSQL изглед срещу материализиран изглед
Материализираните изгледи са подобни на изгледите на PostgreSQL, които ви позволяват да съхранявате SQL заявки, за да ги извикате по-късно. Изгледът на PostgreSQL обаче ви позволява да съхранявате само SQL заявката, но не и нейния резултат. Материализираните изгледи ви позволяват да съхранявате физически резултата от заявката и да ги актуализирате периодично. В резултат на това материализираните изгледи са по-бързи от изгледите на PostgreSQL.
Бонус за четене:Как да получите последния ред на група в PostgreSQL
Как да създадете материализиран изглед в PostgreSQL
Можете да създадете материализиран изглед в PostgreSQL, като използвате израза CREATE MATERIALIZED VIEW, както е показано по-долу.
CREATE MATERIALIZED VIEW view_name AS query WITH [NO] DATA;
В горното изявление трябва да споменете име_на изглед както и заявката чийто резултат искате да съхраните в материализирания изглед.
И накрая, можете също да посочите опция WITH DATA, ако искате да заредите данни в изгледа в момента на неговото създаване. Ако споменете БЕЗ ДАННИ, тогава изгледът ще бъде маркиран като нечетлив и няма да можете да заявявате данни от изгледа, докато не заредите данни в него.
Бонус четене:Функция за създаване на PostgreSQL
Опресняване на материализирания изглед на PostgreSQL
Можете да заредите данни в материализиран изглед, като използвате израза REFRESH MATERIALIZED VIEW, както е показано
REFRESH MATERIALIZED VIEW view_name
Можете също да използвате горното изявление, за да опресните материализирания изглед.
Моля, обърнете внимание, изразът REFRESH MATERIALIZED VIEW заключва данните на заявката, така че не можете да изпълнявате заявки към тях. Можете да го избегнете, като използвате опцията ЕКСПЛОАТАЦИЯ
REFRESH MATERIALIZED VIEW CONCURRENTLY view_name
В този случай PostgreSQL създава временен изглед, сравнява го с оригиналния и прави необходимите вмъквания, актуализации и изтривания. В резултат на това опцията ЕКСПЛОАТАЦИЯ е достъпна само за материализирани изгледи, които имат уникален индекс.
За периодично автоматично опресняване на материализирания изглед, можете да стартирате REFRESH MATERIALIZED VIEW чрез автоматизиран скрипт.
Бонус четене:PostgreSQL Създаване на схема
Премахване на материализирани изгледи
Можете да изтриете материализирани изгледи, като използвате оператор DROP MATERIALIZED VIEW.
DROP MATERIALIZED VIEW view_name
Примери за материализирани изгледи
Нека разгледаме някои примери за материализирани изгледи.
Ето заявката за създаване на материализиран изглед, наречен sample_view
postgres=# create materialized view sample_view as select * from sales with no data;
В горната заявка споменахме опция WITH NO DATA, така че изгледът няма да има никакви данни и ще даде грешка, когато се опитаме да го запитаме.
postgres=# select * from sample_view; ERROR: materialized view "sample_view" has not been populated HINT: Use the REFRESH MATERIALIZED VIEW command.
Сега ще обновим изгледа, за да заредим данни в него и след това ще изпълним горната заявка срещу нашия изглед.
postgres=# refresh materialized view sample_view; REFRESH MATERIALIZED VIEW postgres=# select * from sample_view; order_date | sale ------------+------ 2020-04-01 | 210 2020-04-02 | 125 2020-04-03 | 150 2020-04-04 | 230 2020-04-05 | 200 2020-04-10 | 220 2020-04-06 | 250 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
Както можете да видите по-горе, когато стартираме отново нашата заявка, получаваме резултата.
Надяваме се, че сега можете лесно да създадете материализиран изглед за вашата база данни.
Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте го днес!