Version 11 (modified by 8 months ago) ( diff ) | ,
---|
Профилирање и оптимизација на извршување на прашалниците
Сценарио бр. 1 - Поглед за 20 најпродавани продукти на неделно ниво
- Креирање на нова табела за нарачки, префрлување на податоци од старата табела за нарачки и креирање на две партиции за новата табела
- Во првата партиција ќе се наоѓаат нарачките на неделно ниво (за секоја недела), а во втората партиција сите нарачки од минатото
- Во табелата за нарачки се наоѓаат податоци до декември 2023 година, затоа и партициите се направени за тие датуми
- Додавање на индекс на колоната ‘id’ во новата табела за нарачки и исклучување на SEQ SCAN кај PostgreSQL Query Planner
- Целта на исклучување на SEQ SCAN е да го натерате Query Planner-от да ги користи индексите
- Функција со помош на која ќе се извршува префрлување на нарачките од партицијата за тековната недела во партицијата за нарачки за минатото
- Оваа функција ќе се извршува на неделно ниво за да се префрлат нарачките од неделата која што завршува
- Функцијата ќе се повикува автоматски преку Task Scheduler
- Правилно креирање на партиции
- Во претходниот пример, партициите се креирани на тој начин затоа што сите податоци за нарачки се за претходните години
- Префрлување на податоци од партиција во партиција не би работело, затоа што во втората партиција (за нарачки во минатото) можеме да додаваме нарачки до крај на 2023 година (така е специфицирано во партицијата)
- На ваков начин, првата партиција ќе ги има сите нарачки за тековната недела, додека пак втората партиција би ги имала сите нарачки за датуми помали од тековната недела, меѓутоа не специфицираме точно до кој датум, туку проверките ќе се вршат врз основа на CURRENT_DATE што го зима точниот моментален датум во реално време
Сценарио бр. 2 - Оптимизација со материјализиран поглед
- Наместо со партиции, извршување на прашалници може да се оптимизира и со материјализиран поглед
- На сликата подолу, се креира материјализиран поглед во кој се наоѓаат најпродаваните 20 продукти за првата недела од декември 2023 година (тогаш се последните нарачки во табелата ‘orders’)
- За да овој материјализиран поглед е правилно креиран, треба во условот за датум да се провери датумот преку променливата ‘CURRENT_DATE’ и функцијата ‘extract’ со цел да се земат нарачките за последната недела
- Со помош на следнава команда ‘REFRESH MATERIALIZED VIEW top_selling_products_last_week_2’ овој поглед би се освежувал, односно би се промениле продукти така што ќе се најдат најпродаваните продукти за последната недела. За да се автоматизира процесот, би можело да се креира таск преку Task Scheduler кој ќе се извршува еднаш неделно во одредено време
- Оваа функција би се извршувала еднаш неделно и во погледот би се наоѓале најпродаваните продуктите на неделно ниво
Attachments (20)
- Image1.JPG (36.3 KB ) - added by 8 months ago.
- Image2.JPG (20.9 KB ) - added by 8 months ago.
- Image3.JPG (11.3 KB ) - added by 8 months ago.
- Image4.JPG (18.4 KB ) - added by 8 months ago.
- Image5.JPG (22.5 KB ) - added by 8 months ago.
- Image6.JPG (16.8 KB ) - added by 8 months ago.
- Image7.JPG (9.9 KB ) - added by 8 months ago.
- Image8.JPG (12.6 KB ) - added by 8 months ago.
- Image9.JPG (19.2 KB ) - added by 8 months ago.
- Image10.JPG (9.6 KB ) - added by 8 months ago.
- Image11.JPG (27.6 KB ) - added by 8 months ago.
- Image12.JPG (16.1 KB ) - added by 8 months ago.
- Image13.JPG (25.9 KB ) - added by 8 months ago.
- Image14.JPG (34.0 KB ) - added by 8 months ago.
- Image15.JPG (44.2 KB ) - added by 8 months ago.
- Image16.JPG (27.3 KB ) - added by 8 months ago.
- Image17.JPG (30.4 KB ) - added by 8 months ago.
- Image18.JPG (8.7 KB ) - added by 8 months ago.
- Image19.JPG (15.5 KB ) - added by 8 months ago.
- Image20.JPG (9.1 KB ) - added by 8 months ago.
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.