Changes between Version 9 and Version 10 of QueryOptimization


Ignore:
Timestamp:
05/26/26 23:28:11 (19 hours ago)
Author:
233248
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • QueryOptimization

    v9 v10  
    7777
    7878
     79== View 4: Трансакционен лог со имиња на испраќач и примач ==
     80
     81'''Примарен филтер''' за погледот vw_transakcii_iminja ќе биде според smetka_isprakjac_id, односно според сметката од која е испратена трансакцијата. Дополнително, погледот може да се користи и со филтер според smetka_primac_id, isprakjac_klient_id, primac_klient_id или датум на трансакција.
    7982
    8083
     84Овој поглед ќе '''се користи''' како трансакционен лог во банкарскиот систем. Преку него се прикажуваат деталите за трансакцијата, износот, датумот, сметката на испраќачот, сметката на примачот, како и името и презимето на клиентот кој испраќа и клиентот кој прима средства. Овој поглед е важен бидејќи трансакциите се една од најчесто користените функционалности во системот.
     85
     86
     87Иницијалното време за извршување на операциите без дополнителен индекс е значително поголемо од претходните погледи. При UPDATE операција врз табелата transakcija, со филтер според smetka_isprakjac_id, времето изнесува околу 1 s 338 ms, односно 1 s 403 ms. Ова време не е прифатливо во споредба со претходните погледи, каде времињата беа во милисекунди. Поради тоа, за овој поглед има потреба од оптимизација.
     88
     89
     90Од графичкиот план на извршување може да се забележи дека најбавната операција е Full Scan / Seq Scan на табелата transakcija. Тоа значи дека PostgreSQL ја пребарува целата табела transakcija за да ги пронајде редовите каде што smetka_isprakjac_id = 10000. Бидејќи трансакциите се табела која може да има многу голем број редови, ваквото целосно скенирање создава забавување. Ова покажува дека колоната smetka_isprakjac_id е добар кандидат за индексирање, бидејќи директно се користи во WHERE условот. Дополнително, бидејќи погледот може да се пребарува и според примачот, потребен е и индекс на smetka_primac_id.
     91
     92
     93По индексирањето, прашалникот враќа 240 редови, а execution времето изнесува 32 ms. Вкупното време прикажано е 404 ms, но од тоа 372 ms се однесуваат на fetching, односно преземање и прикажување на резултатите. Затоа како релевантно време за базата се зема execution времето од 32 ms.
     94
     95
     96Времето за UPDATE и INSERT операциите по индексирањето исто така е прифатливо. По креирањето на индексите, UPDATE операцијата врз табелата transakcija се извршува за 6 ms и INSERT за 2ms.
     97
     98
     99
     100
     101
     102
     103
     104