Changes between Version 3 and Version 4 of Оптимизација на прашалници и погледи


Ignore:
Timestamp:
05/20/26 22:52:14 (5 days ago)
Author:
231068
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Оптимизација на прашалници и погледи

    v3 v4  
    22
    33[[html(<a href="https://develop.finki.ukim.mk/projects/BPS_EMJ/attachment/wiki/%20%D0%9E%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%98%D0%B0%20%D0%BD%D0%B0%20%D0%BF%D1%80%D0%B0%D1%88%D0%B0%D0%BB%D0%BD%D0%B8%D1%86%D0%B8%20%D0%B8%20%D0%BF%D0%BE%D0%B3%D0%BB%D0%B5%D0%B4%D0%B8/OptimizacijaPrashalniciPogledi.pdf"> Optimizacija i Prashalnici</a>)]]
    4 
    5 <p>Напредни бази на податоци</p>
    6 <p>Фаза 3 – Оптимизација на прашалници и погледи</p>
    7 <p>Име на проект: BankPaymentService</p>
    8 <p>View 1: Најава на корисник (Login view)</p>
    9 <ol type="1">
    10 <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_user_login
    11 ќе биде според username, а дополнително се филтрира само на корисници со
    12 статус ACTIVE.</p></li>
    13 <li><p><strong>Употреба:</strong> е процесот на логирање на клиент во
    14 системот. Погледот обезбедува брз пристап до корисничкото име, и
    15 статусот на сметката.</p></li>
    16 <li><p><strong>Иницијално време:</strong> Иницијалното време за
    17 извршување на погледот е 0.315ms. Ова е прифатливо време за
    18 апликацијата.</p>
    19 <p><img src="Pictures/10000000000003EF0000004ED2C1203F968DA51D.png"
    20 style="width:16.365cm;height:1.266cm" /></p></li>
    21 <li><p>Најбавните операции се две Index Scan операции:<br />
    22 Index Scan на табела client_user преку индексот client_user_username_key
    23 - Actual Total Time: 0.039ms<br />
    24 Index Scan на табела client преку индексот client_pkey - Actual Total
    25 Time: 0.013ms</p>
    26 <p>Вкупниот Nested Loop завршува за само 0.056ms. Бидејќи се работи за
    27 Index Scan (не Full Scan), операциите не можат значително да се подобрат
    28 со дополнителни индекси.</p></li>
    29 </ol>
    30 <p><img src="Pictures/100000000000064F000000C0BFBD9FAE9F14CCA1.jpg"
    31 style="width:17cm;height:2.02cm" /></p>
    32 <ol type="1">
    33 <li><p>Времето изминато во извршување на операциите insert и update
    34 изнесува</p></li>
    35 </ol>
    36 <p><img src="Pictures/100000000000050E000001C13D4229315652A926.jpg"
    37 style="width:17cm;height:5.898cm" /></p>
    38 <p><img src="Pictures/1000000000000594000000BE9126B6B14C29B800.jpg"
    39 style="width:17cm;height:2.261cm" /></p>
    40 <ol type="1">
    41 <li>Нема потреба да се преуреди прашалникот.</li>
    42 </ol>
    43 <ol type="1">
    44 <li>Време на извршување на операциите insert и update останува
    45 исто.</li>
    46 </ol>
    47 <p>View 2: Извештаи (Receipt view)</p>
    48 <ol type="1">
    49 <li><p><strong>Филтри:</strong> Примарен филтер за погледот
    50 v_client_receipts ќе биде според client_id, а дополнително може да се
    51 користи и според transaction_date (по временски период - месец и
    52 година).</p></li>
    53 <li><p><strong>Употреба:</strong> Примарен случај на употреба е преглед
    54 на издадени сметки за клиент по одреден период. За овој поглед ни се
    55 важни перформансите, бидејќи без него се губи време при
    56 извршување.</p></li>
    57 <li><strong>Иницијално време:</strong> Иницијалното време за извршување
    58 на погледот e 705ms. Ова е прифатливо време за апликацијата.</li>
    59 </ol>
    60 <p><img src="Pictures/10000000000005380000003F5777FB357E41BC06.jpg"
    61 style="width:17cm;height:0.801cm" /></p>
    62 <ol type="1">
    63 <li>Нема потреба од правење план на извршување, бидејќи времето е
    64 задоволително. Времето на операциите insert и update е</li>
    65 </ol>
    66 <p><img src="Pictures/10000000000004410000021A019CAD870463A1BC.jpg"
    67 style="width:17cm;height:7.107cm" /></p>
    68 <p><img src="Pictures/10000000000004630000013DD4DCE6565EC0F2D0.jpg"
    69 style="width:17cm;height:4.798cm" /></p>
    70 <p><img src="Pictures/10000000000004060000008E0EA75E1943CAC590.jpg"
    71 style="width:17cm;height:2.342cm" /></p>
    72 <ol type="1">
    73 <li>Нема потреба да се преуреди прашалникот.</li>
    74 </ol>
    75 <ol type="1">
    76 <li><p>Време на извршување на операциите insert и update останува
    77 исто.</p></li>
    78 </ol>
    79 <p>View 3: Рати (Loan installments view)</p>
    80 <ol type="1">
    81 <li><p><strong>Филтри:</strong> Примарен филтер за погледот
    82 v_loan_installments ќе биде според loan_id.</p></li>
    83 <li><p><strong>Употреба:</strong> Примарен случај на употреба е кога
    84 клиентот или банкарскиот персонал сака да ги прегледа ратите за
    85 конкретен кредит. За овој поглед ни се важни перформансите.</p></li>
    86 <li><strong>Иницијално време:</strong> Иницијалното време за извршување
    87 на погледот е 250.5ms. Ова е прифатливо време за апликацијата.</li>
    88 </ol>
    89 <p><img src="Pictures/10000000000003C30000005104A77B128B569F7F.jpg"
    90 style="width:17cm;height:1.429cm" /></p>
    91 <ol type="1">
    92 <li>Нема потреба од правење план на извршување, бидејќи времето е
    93 задоволително. Пребарувањето по loan_id секогаш враќа мал број рати за
    94 конкретен кредит, па табелата не се пребарува со висока фреквенција
    95 истовремено. Времето на операциите insert и update изнесува</li>
    96 </ol>
    97 <p><img src="Pictures/100000000000033C0000024C414CCA13AFC79A5B.jpg"
    98 style="width:17cm;height:8.209cm" /></p>
    99 <p><img src="Pictures/1000000000000399000000D00CBD0F8B690447A5.jpg"
    100 style="width:17cm;height:3.838cm" /></p>
    101 <ol type="1">
    102 <li><p>Нема потреба да се преуреди прашалникот.</p></li>
    103 <li>Времето на извршување на операциите insert и update останува
    104 исто.</li>
    105 </ol>
    106 <p>View 4: Преглед на кредити</p>
    107 <ol type="1">
    108 <li><p><strong>Филтри:</strong> Примарен филтер за погледот
    109 v_loan_details ќе биде според loan_id, а исто така и според
    110 client_id.</p></li>
    111 <li><p><strong>Употреба:</strong> Примарен случај на употреба е целосен
    112 преглед на кредитна апликација. За овој поглед ни се важни
    113 перформансите, бидејќи без него се губи многу време при
    114 извршување.</p></li>
    115 <li><strong>Иницијално време:</strong> Иницијалното време за извршување
    116 на погледот e 1s 735ms. Времето е побавно поради повеќе JOIN операции и
    117 full scan на табелите Account и Collateral. Ова не е прифатливо за
    118 апликацијата.</li>
    119 </ol>
    120 <p><img src="Pictures/10000000000003B500000073DEBE475DBBF0F7AF.jpg"
    121 style="width:17cm;height:2.058cm" /></p>
    122 <ol type="1">
    123 <li><p>Најбавните операции се JOIN-овите на Account и Collateral преку
    124 loan_id, кои немаат индекси на надворешниот клуч. </p></li>
    125 </ol>
    126 <p><img src="Pictures/100000000000061700000258882EDFAC4AA56D07.jpg"
    127 style="width:17cm;height:6.542cm" /></p>
    128 <ol type="1">
    129 <li>Времето изминато во извршување на операциите insert и update
    130 изнесува</li>
    131 </ol>
    132 <p><img src="Pictures/10000000000003AC00000210E2D9E277C5823FC1.jpg"
    133 style="width:17cm;height:6.816cm" /></p>
    134 <p><img src="Pictures/100000000000034E0000009629B94CAC106DBB61.jpg"
    135 style="width:17cm;height:3.013cm" /></p>
    136 <ol type="1">
    137 <li>Времето изминато во извршување на query-то со индекси изнесува
    138 781ms, и тоа е прифатливо време.</li>
    139 </ol>
    140 <p><img src="Pictures/10000000000001800000004B0572BB5F6DC462A8.jpg"
    141 style="width:8.128cm;height:1.588cm" /></p>
    142 <p><img src="Pictures/100000000000037C0000005925F28C4AEA5E55BD.jpg"
    143 style="width:17cm;height:1.695cm" /></p>
    144 <p><img src="Pictures/10000000000005EE000002376351195B9D922B9F.jpg"
    145 style="width:17cm;height:6.348cm" /></p>
    146 <ol type="1">
    147 <li><p>Времето изминато во извршување на операцијата update по</p>
    148 <p>индексирање изнесува</p></li>
    149 </ol>
    150 <p><img src="Pictures/100000000000037D0000009B46AC848D94C27370.jpg"
    151 style="width:17cm;height:2.949cm" /></p>
    152 <p><strong></strong></p>
    153 <p>View 5: Трансфери меѓу сметки, трансакции</p>
    154 <ol type="1">
    155 <li></li>
    156 <li><p>Филтри: Примарен филтер за погледот v_client_transfers ќе биде
    157 според sender_client_id, а дополнително и според
    158 transaction_date.</p></li>
    159 <li><p><strong>Употреба: </strong>Примарен случај на употреба е кога
    160 клиентот сака да ги прегледа своите извршени трансфери. За овој поглед
    161 ни се важни перформансите.</p></li>
    162 <li><strong>Иницијално време:</strong> Иницијалното време за извршување
    163 на погледот е 68ms. Времето е прифатливо, бидејќи JOIN операциите се
    164 базираат на примарни и надворешни клучеви кои веќе имаат индекси.</li>
    165 </ol>
    166 <p><img src="Pictures/10000000000004F100000049FD9EBED2C7D658AE.jpg"
    167 style="width:17cm;height:0.981cm" /></p>
    168 <ol type="1">
    169 <li>Најбавните операции не претставуваат значителен проблем. Двојниот
    170 JOIN на Account и Client (за испраќач и примач) се изведува ефикасно
    171 преку постојните индекси.</li>
    172 </ol>
    173 <p><img src="Pictures/100000000000064B000002140C05B7A84E27CDEE.jpg"
    174 style="width:17cm;height:5.613cm" /></p>
    175 <ol type="1">
    176 <li>Времето на операциите insert и update изнесува</li>
    177 </ol>
    178 <p><img src="Pictures/100000000000043B0000031DE6C67FC442B989C9.jpg"
    179 style="width:17cm;height:8.416cm" /></p>
    180 <p><img src="Pictures/1000000000000402000000AC9910924A674E0141.jpg"
    181 style="width:17cm;height:2.849cm" /></p>
    182 <ol type="1">
    183 <li><p>Нема потреба да се преуредува прашалникот.</p></li>
    184 <li>Времето на извршување на операциите insert и update останува
    185 исто.</li>
    186 </ol>
    187 <p>View 6: Сомнителни трансакции</p>
    188 <ol type="1">
    189 <li><p><strong>Филтри:</strong> Примарен филтер за погледот
    190 v_suspicious_transactions е </p>
    191 <p>amount &gt; 9000 AND status IN ('PENDING', 'FAILED').</p></li>
    192 <li><p><strong>Употреба:</strong> Примарен случај на употреба е
    193 мониторинг на потенцијално сомнителна активност (AML). За овој поглед ни
    194 се важни перформансите, бидејќи без него се губи многу време при
    195 извршување.</p></li>
    196 <li><strong>Иницијално време:</strong> Иницијалното време за извршување
    197 на погледот е 8s 15ms. Времето за извршување е побавно поради full scan
    198 на табелата Transaction за да се пронајдат записите со висок износ. Ова
    199 не е прифатливо за апликацијата, па затоа пристапуваме кон
    200 индексирање.</li>
    201 </ol>
    202 <p><img src="Pictures/100000000000054500000061340BA08FFB7A632E.jpg"
    203 style="width:17cm;height:1.222cm" /></p>
    204 <ol type="1">
    205 <li>Најбавните операции се full scan на Transaction за филтрирање по
    206 amount и status, и JOIN со Account без индекс на client_id.</li>
    207 </ol>
    208 <p><img src="Pictures/10000000000006750000013276780519839AF461.jpg"
    209 style="width:17cm;height:3.147cm" /></p>
    210 <ol type="1">
    211 <li>Времето изминато во извршување на insert и update изнесува</li>
    212 </ol>
    213 <p><img src="Pictures/100000000000041000000280E36A992C95632EB6.jpg"
    214 style="width:17cm;height:7.523cm" /></p>
    215 <p><img src="Pictures/10000000000003F10000007118EB86F80F8A6DF8.jpg"
    216 style="width:17cm;height:1.903cm" /></p>
    217 <ol type="1">
    218 <li>Времето изминато во извршување на query-то со индекси изнесува
    219 669ms, и тоа е прифатливо време.</li>
    220 </ol>
    221 <p><img src="Pictures/10000000000002F60000004CF3C0912239A50752.jpg"
    222 style="width:9.648cm;height:0.968cm" /></p>
    223 <p><img src="Pictures/1000000000000677000000669B34794C6F20D39F.jpg"
    224 style="width:17cm;height:1.048cm" /></p>
    225 <p><img src="Pictures/10000000000006500000015EAFD79F098D9662E2.jpg"
    226 style="width:17cm;height:3.681cm" /></p>
    227 <ol type="1">
    228 <li>Времето изминато во извршување на операцијата update по индексирање
    229 изнесува</li>
    230 </ol>
    231 <p><img src="Pictures/10000000000003F90000007E7133EA0A4E6F0A26.jpg"
    232 style="width:17cm;height:2.106cm" /></p>
    233 <p>View 7: Вкупна состојба на клиент</p>
    234 <ol type="1">
    235 <li><p><strong>Филтри:</strong> Примарен филтер за погледот
    236 v_account_balance ќе биде според client_id.</p></li>
    237 <li><p><strong>Употреба:</strong> Примарен случај на употреба е кога
    238 клиентот сака да го провери балансот на своите сметки. Овде се битни
    239 перформансите, затоа што сакаме апликацијата да функционира без
    240 застој.</p></li>
    241 <li><strong>Иницијално време:</strong> Иницијалното време за извршување
    242 на овој поглед изнесува 88ms. Времето е мало и прифатливо, бидејќи
    243 JOIN-овите се на примарни клучеви.</li>
    244 </ol>
    245 <p><img src="Pictures/10000000000004D900000055506AD095D2214B49.jpg"
    246 style="width:17cm;height:1.164cm" /></p>
    247 <ol type="1">
    248 <li>Нема потреба од правење план на извршување, бидејќи времето е
    249 задоволително. Времето на операции insert и update изнесува</li>
    250 </ol>
    251 <p><img src="Pictures/10000000000003850000024BC2B9206C5806DF69.jpg"
    252 style="width:17cm;height:8.059cm" /></p>
    253 <p><img src="Pictures/10000000000003D200000092E5B49A21A1412398.jpg"
    254 style="width:17cm;height:2.536cm" /></p>
    255 <ol type="1">
    256 <li><p>Нема потреба да се преуреди прашалникот.</p></li>
    257 <li>Време на извршување на операциите insert и update останува
    258 исто.</li>
    259 </ol>
    260 <p>View 8: Следење на доцнења (Loan Default Monitoring)</p>
    261 <ol type="1">
    262 <li><p><strong>Филтри:</strong> Примарен филтер за погледот
    263 v_loan_default_monitoring ќе биде според installment_status IN
    264 ('PENDING','LATE') и due_date, со услов paid_date IS NULL.</p></li>
    265 <li><p><strong>Употреба:</strong> Примарен случај на употреба е кога
    266 банкарскиот персонал сака да ги идентификува клиентите кои задоцниле со
    267 плаќање. За овој поглед ни се важни перформансите, бидејќи без него се
    268 губи многу време при извршување.</p></li>
    269 <li><p><strong>Иницијално време:</strong> Иницијалното време за
    270 извршување на погледот е 9s 289ms. Иницијалното време за извршување на
    271 погледот беше побавно поради full scan на табелата Loan_installment. Ова
    272 не е прифатливо време за апликацијата па затоа пристапуваме кон
    273 индексирање.</p></li>
    274 </ol>
    275 <p><img src="Pictures/10000001000005ED000000AD30C01F97CF8CBBC8.png"
    276 style="width:17cm;height:1.939cm" /></p>
    277 <ol type="1">
    278 <li>Најбавните операции се full scan на Loan_installment без филтрирање
    279 на платените рати, и JOIN со Account без covering индекс.</li>
    280 </ol>
    281 <p><img src="Pictures/10000000000005CA00000115FDFDC84593A4B3CD.jpg"
    282 style="width:17cm;height:3.177cm" /></p>
    283 <ol type="1">
    284 <li>Времето изминато во извршување на INSERT и UPDATE пред изнесува</li>
    285 </ol>
    286 <p><img src="Pictures/10000000000003ED000001E05427A309BA9386AE.jpg"
    287 style="width:17cm;height:5.838cm" /></p>
    288 <p><img src="Pictures/1000000000000396000000B2FB875366030EE4FA.jpg"
    289 style="width:17cm;height:3.295cm" /></p>
    290 <ol type="1">
    291 <li>Времето изминато во извршување на query-то со индекси изнесува
    292 597.9ms, и тоа е прифатливо време.</li>
    293 </ol>
    294 <p><img src="Pictures/100000000000028B000000F4A90034AFD5124592.png"
    295 style="width:7.893cm;height:2.536cm" /></p>
    296 <p><img src="Pictures/10000001000004D50000008CB21208A12DCDBD00.png"
    297 style="width:17cm;height:1.923cm" /></p>
    298 <p><img src="Pictures/10000000000006C5000000FCFBB682A570488546.jpg"
    299 style="width:17cm;height:2.471cm" /></p>
    300 <ol type="1">
    301 <li><p>Времето изминато во извршување на операциите insert и update
    302 по</p>
    303 <p>индексирање изнесува</p></li>
    304 </ol>
    305 <p><img src="Pictures/10000001000003AF000001D24A4EE3398BCFA135.png"
    306 style="width:17cm;height:6.075cm" /></p>
    307 <p><img src="Pictures/1000000000000400000000B22FF79EF37E844CA3.png"
    308 style="width:17cm;height:2.955cm" /></p>
    309 <p>View 9: Accounts (сметки)</p>
    310 <ol type="1">
    311 <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_accounts
    312 ќе биде според client_id.</p></li>
    313 <li><p><strong>Употреба:</strong> Примарен случај на употреба е преглед
    314 на сите сметки на клиент при услуги на шалтер. Овде се битни
    315 перформансите.</p></li>
    316 <li>Иницијално време: Иницијалното време за извршување на овој поглед е
    317 100ms, што е прифатливо, па затоа нема да имаме потреба од
    318 индексирање.</li>
    319 </ol>
    320 <p><img src="Pictures/100000000000046D00000068DD81C2FCE1D7EB09.jpg"
    321 style="width:17cm;height:1.559cm" /></p>
    322 <ol type="1">
    323 <li>Нема потреба од правење план на извршување, бидејќи времето е
    324 задоволително. Времето на операциите insert и update е</li>
    325 </ol>
    326 <p><img src="Pictures/100000000000038200000248548DB7D2D549A33D.jpg"
    327 style="width:17cm;height:6.962cm" /></p>
    328 <p><img src="Pictures/10000000000003F3000000860AFA968B82C6EA90.jpg"
    329 style="width:17cm;height:2.252cm" /></p>
    330 <ol type="1">
    331 <li><p>Нема потреба да се преуредува прашалникот.</p></li>
    332 <li>Времето на извршување на операциите insert и update останува
    333 исто.</li>
    334 </ol>
    335 <p>View 10: Камати по штедни сметки</p>
    336 <ol type="1">
    337 <li><p><strong>Филтри:</strong> Примарен филтер за погледот
    338 v_savings_interest_payments ќе биде според client_id.</p></li>
    339 <li><p><strong>Употреба:</strong> Примарен случај на употреба е кога
    340 клиентот сака да ги прегледа добиените камати по период. Овде се важни
    341 перформансите.</p></li>
    342 <li><strong>Иницијално време:</strong> Иницијалното време за извршување
    343 на овој поглед е 214ms, што е прифатливо, па затоа нема да имаме потреба
    344 од индексирање.</li>
    345 </ol>
    346 <p><img src="Pictures/10000000000004580000006A5F91B9E27481DBDD.jpg"
    347 style="width:17cm;height:1.619cm" /></p>
    348 <ol type="1">
    349 <li>Нема потреба од правење план на извршување, бидејќи времето е
    350 задоволително. Времето на операциите insert и update е</li>
    351 </ol>
    352 <p><img src="Pictures/10000000000003AA000001DAFA05C124F81E3682.jpg"
    353 style="width:17cm;height:6.167cm" /></p>
    354 <p><img src="Pictures/10000000000003B4000000838C3C0ED6E89E3A87.jpg"
    355 style="width:17cm;height:2.348cm" /></p>
    356 <ol type="1">
    357 <li><p>Нема потреба да се преуредува прашалникот.</p></li>
    358 <li>Времето на извршување на операциите insert и update останува
    359 исто.</li>
    360 </ol>
    361 <p>View 11: Дневен извештај на филијала</p>
    362 <ol type="1">
    363 <li><p><strong>Филтри:</strong> Примарен филтер за погледот
    364 v_daily_branch_report ќе биде според branch_id, а дополнително и според
    365 report_date.</p></li>
    366 <li><p><strong>Употреба:</strong> Примарен случај на употреба е кога
    367 раководството на филијалата или централниот менаџмент сака да ги следи
    368 дневните активности. Овде се битни перформансите.</p></li>
    369 <li><strong>Иницијално време:</strong> Иницијалното време за извршување
    370 на погледот е 385ms. Ова е прифатливо време за апликацијата.</li>
    371 </ol>
    372 <p><img src="Pictures/10000000000004CD0000005837F076E81A00A27E.jpg"
    373 style="width:17cm;height:1.217cm" /></p>
    374 <ol type="1">
    375 <li>Нема потреба од правење план на извршување, бидејќи времето е
    376 задоволително. Времето на операциите insert и update е </li>
    377 </ol>
    378 <p><img src="Pictures/10000000000003990000016FF5837C3A51BAC6D2.jpg"
    379 style="width:17cm;height:5.606cm" /></p>
    380 <p><img src="Pictures/1000000000000390000000B15BCF0CC250B8B7A3.jpg"
    381 style="width:17cm;height:3.298cm" /></p>
    382 <ol type="1">
    383 <li><p>Нема потреба да се преуредува прашалникот.</p></li>
    384 <li>Времето на извршување на операциите insert и update останува
    385 исто.</li>
    386 </ol>
    387 <p>Членови на тим:</p>
    388 <p>Михаела Ковчегарска 231068</p>
    389 <p>Јована Мечева 231124</p>
    390 <p>Емилија Костова 231107</p>