| Version 14 (modified by , 17 hours ago) ( diff ) |
|---|
Оптимизација на прашалници и погледи
View 1: Детален преглед на сметки
Примарен филтер за погледот vw_smetki_detali е според klient_id, бидејќи во банкарскиот систем најчесто е потребно да се прикажат сите сметки кои припаѓаат на конкретен клиент. Дополнително, погледот може да се користи и за пребарување според smetka_id или broj_smetka.
Погледот се користи за детален преглед на сметки, при што се прикажуваат број на сметка, тип на сметка, салдо, валута, статус и основни податоци за клиентот. Овој приказ би се користел од страна на клиент или банкарски службеник при проверка на сметките на клиентот.
Иницијалното време на извршување на прашалникот без дополнителен индекс изнесува 27 ms, при што се враќаат 3 редови. Вкупното време е 363 ms, но од тоа 336 ms се однесуваат на fetching, односно преземање и прикажување на резултатите во клиентската алатка. Затоа како релевантно време за базата се зема execution времето од 27 ms.
Од иницијалниот план на извршување може да се забележи дека PostgreSQL користи Parallel Seq Scan на табелата smetka и филтрира според klient_id = 50000. Иако постои простор за оптимизација со индекс на колоната klient_id, времето на извршување е доволно мало и прифатливо за апликацијата.
Времето за Insert и Update е прифатливо.
Нема потреба од преуредување на прашалникот.
Времето на извршување на операциите останува исто.
View 2: Мониторинг на картички поврзани со клиент
Примарен филтер за погледот vw_karticki_klienti ќе биде според klient_id, односно според клиентот на кој му припаѓа сметката поврзана со картичката. Дополнително, погледот може да се користи и за пребарување според smetka_id, broj_karticka или статус на картичката.
Овој поглед ќе се користи за мониторинг на картичките на клиентите. Преку него може да се видат бројот на картичката, статусот на картичката, датумот на истекување, типот на картичката, бројот на сметката и основните податоци за сопственикот. Бидејќи картичките се поврзани со клиентот преку сметката, табелата smetka има важна улога во овој поглед.
Иницијалното време за извршување на погледот без дополнителен индекс изнесува 48 ms. Вкупно време од 380 ms, но од тоа 48 ms е реалното execution време, додека 332 ms се однесуваат на fetching, односно преземање и прикажување на резултатите. Затоа како релевантно време за базата се зема execution времето од 48 ms.
Од графичкиот план на извршување може да се забележи дека PostgreSQL користи Full Scan / Seq Scan на табелите karticka и smetka. Во планот се гледа дека табелата karticka има околу 105882 редови, а реално се разгледуваат околу 90000 редови. Исто така се гледа и Full Scan на табелата smetka. Иако постојат full scan операции, времето на извршување е доволно мало и прифатливо. Поради тоа, не е неопходно да се креира посебен индекс само за овој поглед.
Нема потреба да се преуредува прашалникот.
Времето на извршување на операциите останува исто.
View 3: Кредити и статус на рати
Примарен филтер за погледот vw_kreditni_rati_status ќе биде според klient_id, односно според клиентот за кој се проверуваат кредитите и нивните рати. Дополнително, погледот може да се користи и за пребарување според kredit_id, доколку е потребно да се прикажат сите рати за конкретен кредит.
Овој поглед ќе се користи за преглед на кредитни рати и нивниот статус. Преку него може да се види кој клиент има кредит, кои рати се поврзани со тој кредит, износот на секоја рата, датумот на валута, статусот на ратата и валутата во која е изразен кредитот. Овој поглед е корисен за проверка дали ратите се платени, неплатени или задоцнети.
Иницијалното време за извршување на погледот без дополнителен индекс изнесува 59 ms. Вкупно време од 444 ms, но од тоа 59 ms е реалното execution време, додека 385 ms се однесуваат на fetching, односно преземање и прикажување на резултатите. Затоа како релевантно време за базата се зема execution времето од 59 ms.
Од графичкиот план на извршување може да се забележи дека PostgreSQL користи Full Scan / Seq Scan на табелите rata_kredit и smetka. Во планот се гледа дека табелата rata_kredit има голем број редови и се скенира за да се пронајдат ратите поврзани со кредитот на клиентот. Исто така се користи и Full Scan на табелата smetka, преку која кредитот се поврзува со клиентот.Иако планот покажува full scan операции, времето на извршување е доволно мало и прифатливо. Поради тоа, не е неопходно да се креира посебен индекс само за овој поглед.
Нема потреба да се преуредува прашалникот.
Времето на извршување на операциите останува исто.
View 4: Трансакционен лог со имиња на испраќач и примач
Примарен филтер за погледот vw_transakcii_iminja ќе биде според smetka_isprakjac_id, односно според сметката од која е испратена трансакцијата. Дополнително, погледот може да се користи и со филтер според smetka_primac_id, isprakjac_klient_id, primac_klient_id или датум на трансакција.
Овој поглед ќе се користи како трансакционен лог во банкарскиот систем. Преку него се прикажуваат деталите за трансакцијата, износот, датумот, сметката на испраќачот, сметката на примачот, како и името и презимето на клиентот кој испраќа и клиентот кој прима средства. Овој поглед е важен бидејќи трансакциите се една од најчесто користените функционалности во системот.
Иницијалното време за извршување на операциите без дополнителен индекс е значително поголемо од претходните погледи. При UPDATE операција врз табелата transakcija, со филтер според smetka_isprakjac_id, времето изнесува околу 1 s 338 ms, односно 1 s 403 ms. Ова време не е прифатливо во споредба со претходните погледи, каде времињата беа во милисекунди. Поради тоа, за овој поглед има потреба од оптимизација.
Од графичкиот план на извршување може да се забележи дека најбавната операција е Full Scan / Seq Scan на табелата transakcija. Тоа значи дека PostgreSQL ја пребарува целата табела transakcija за да ги пронајде редовите каде што smetka_isprakjac_id = 10000. Бидејќи трансакциите се табела која може да има многу голем број редови, ваквото целосно скенирање создава забавување. Ова покажува дека колоната smetka_isprakjac_id е добар кандидат за индексирање, бидејќи директно се користи во WHERE условот. Дополнително, бидејќи погледот може да се пребарува и според примачот, потребен е и индекс на smetka_primac_id.
По индексирањето, прашалникот враќа 240 редови, а execution времето изнесува 32 ms. Вкупното време прикажано е 404 ms, но од тоа 372 ms се однесуваат на fetching, односно преземање и прикажување на резултатите. Затоа како релевантно време за базата се зема execution времето од 32 ms.
Времето за UPDATE и INSERT операциите по индексирањето исто така е прифатливо. По креирањето на индексите, UPDATE операцијата врз табелата transakcija се извршува за 6 ms и INSERT за 2ms.
Attachments (33)
- view1.png (25.3 KB ) - added by 18 hours ago.
- view1.1.png (107.7 KB ) - added by 18 hours ago.
- view1.2.png (83.8 KB ) - added by 18 hours ago.
- view2.png (26.0 KB ) - added by 18 hours ago.
- view2.1.png (140.7 KB ) - added by 18 hours ago.
- view2.2.png (117.3 KB ) - added by 18 hours ago.
- view3.png (26.0 KB ) - added by 18 hours ago.
- view3.1.png (145.2 KB ) - added by 18 hours ago.
- view3.2.png (58.9 KB ) - added by 18 hours ago.
- view4.png (24.7 KB ) - added by 18 hours ago.
- view4.1.png (152.1 KB ) - added by 18 hours ago.
- view4.2.png (126.0 KB ) - added by 18 hours ago.
- view4.4.png (134.1 KB ) - added by 17 hours ago.
- view44.png (285.0 KB ) - added by 17 hours ago.
- view4.treto.png (66.4 KB ) - added by 17 hours ago.
- view5.png (25.6 KB ) - added by 17 hours ago.
- view5.1.png (111.0 KB ) - added by 17 hours ago.
- view5.2.png (52.2 KB ) - added by 17 hours ago.
- view6.png (25.8 KB ) - added by 17 hours ago.
- view6.1.png (94.4 KB ) - added by 17 hours ago.
- view6.2.png (85.3 KB ) - added by 17 hours ago.
- view7.png (25.8 KB ) - added by 17 hours ago.
- view7.1.png (67.9 KB ) - added by 17 hours ago.
- view7.2.png (80.1 KB ) - added by 17 hours ago.
- view8.png (26.1 KB ) - added by 17 hours ago.
- view8.1.png (98.1 KB ) - added by 17 hours ago.
- view8.2.png (119.0 KB ) - added by 17 hours ago.
- view9.png (45.5 KB ) - added by 17 hours ago.
- view9.1.png (99.6 KB ) - added by 17 hours ago.
- view9.2.png (41.7 KB ) - added by 17 hours ago.
- view9.3.png (25.9 KB ) - added by 17 hours ago.
- view9.4.png (85.8 KB ) - added by 17 hours ago.
- view9.5.png (92.9 KB ) - added by 17 hours ago.











