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


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

--

Legend:

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

    v2 v3  
    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"
     20style="width:16.365cm;height:1.266cm" /></p></li>
     21<li><p>Најбавните операции се две Index Scan операции:<br />
     22Index Scan на табела client_user преку индексот client_user_username_key
     23- Actual Total Time: 0.039ms<br />
     24Index Scan на табела client преку индексот client_pkey - Actual Total
     25Time: 0.013ms</p>
     26<p>Вкупниот Nested Loop завршува за само 0.056ms. Бидејќи се работи за
     27Index Scan (не Full Scan), операциите не можат значително да се подобрат
     28со дополнителни индекси.</p></li>
     29</ol>
     30<p><img src="Pictures/100000000000064F000000C0BFBD9FAE9F14CCA1.jpg"
     31style="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"
     37style="width:17cm;height:5.898cm" /></p>
     38<p><img src="Pictures/1000000000000594000000BE9126B6B14C29B800.jpg"
     39style="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> Примарен филтер за погледот
     50v_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"
     61style="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"
     67style="width:17cm;height:7.107cm" /></p>
     68<p><img src="Pictures/10000000000004630000013DD4DCE6565EC0F2D0.jpg"
     69style="width:17cm;height:4.798cm" /></p>
     70<p><img src="Pictures/10000000000004060000008E0EA75E1943CAC590.jpg"
     71style="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> Примарен филтер за погледот
     82v_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"
     90style="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"
     98style="width:17cm;height:8.209cm" /></p>
     99<p><img src="Pictures/1000000000000399000000D00CBD0F8B690447A5.jpg"
     100style="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> Примарен филтер за погледот
     109v_loan_details ќе биде според loan_id, а исто така и според
     110client_id.</p></li>
     111<li><p><strong>Употреба:</strong> Примарен случај на употреба е целосен
     112преглед на кредитна апликација. За овој поглед ни се важни
     113перформансите, бидејќи без него се губи многу време при
     114извршување.</p></li>
     115<li><strong>Иницијално време:</strong> Иницијалното време за извршување
     116на погледот e 1s 735ms. Времето е побавно поради повеќе JOIN операции и
     117full scan на табелите Account и Collateral. Ова не е прифатливо за
     118апликацијата.</li>
     119</ol>
     120<p><img src="Pictures/10000000000003B500000073DEBE475DBBF0F7AF.jpg"
     121style="width:17cm;height:2.058cm" /></p>
     122<ol type="1">
     123<li><p>Најбавните операции се JOIN-овите на Account и Collateral преку
     124loan_id, кои немаат индекси на надворешниот клуч. </p></li>
     125</ol>
     126<p><img src="Pictures/100000000000061700000258882EDFAC4AA56D07.jpg"
     127style="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"
     133style="width:17cm;height:6.816cm" /></p>
     134<p><img src="Pictures/100000000000034E0000009629B94CAC106DBB61.jpg"
     135style="width:17cm;height:3.013cm" /></p>
     136<ol type="1">
     137<li>Времето изминато во извршување на query-то со индекси изнесува
     138781ms, и тоа е прифатливо време.</li>
     139</ol>
     140<p><img src="Pictures/10000000000001800000004B0572BB5F6DC462A8.jpg"
     141style="width:8.128cm;height:1.588cm" /></p>
     142<p><img src="Pictures/100000000000037C0000005925F28C4AEA5E55BD.jpg"
     143style="width:17cm;height:1.695cm" /></p>
     144<p><img src="Pictures/10000000000005EE000002376351195B9D922B9F.jpg"
     145style="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"
     151style="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, а дополнително и според
     158transaction_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"
     167style="width:17cm;height:0.981cm" /></p>
     168<ol type="1">
     169<li>Најбавните операции не претставуваат значителен проблем. Двојниот
     170JOIN на Account и Client (за испраќач и примач) се изведува ефикасно
     171преку постојните индекси.</li>
     172</ol>
     173<p><img src="Pictures/100000000000064B000002140C05B7A84E27CDEE.jpg"
     174style="width:17cm;height:5.613cm" /></p>
     175<ol type="1">
     176<li>Времето на операциите insert и update изнесува</li>
     177</ol>
     178<p><img src="Pictures/100000000000043B0000031DE6C67FC442B989C9.jpg"
     179style="width:17cm;height:8.416cm" /></p>
     180<p><img src="Pictures/1000000000000402000000AC9910924A674E0141.jpg"
     181style="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> Примарен филтер за погледот
     190v_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"
     203style="width:17cm;height:1.222cm" /></p>
     204<ol type="1">
     205<li>Најбавните операции се full scan на Transaction за филтрирање по
     206amount и status, и JOIN со Account без индекс на client_id.</li>
     207</ol>
     208<p><img src="Pictures/10000000000006750000013276780519839AF461.jpg"
     209style="width:17cm;height:3.147cm" /></p>
     210<ol type="1">
     211<li>Времето изминато во извршување на insert и update изнесува</li>
     212</ol>
     213<p><img src="Pictures/100000000000041000000280E36A992C95632EB6.jpg"
     214style="width:17cm;height:7.523cm" /></p>
     215<p><img src="Pictures/10000000000003F10000007118EB86F80F8A6DF8.jpg"
     216style="width:17cm;height:1.903cm" /></p>
     217<ol type="1">
     218<li>Времето изминато во извршување на query-то со индекси изнесува
     219669ms, и тоа е прифатливо време.</li>
     220</ol>
     221<p><img src="Pictures/10000000000002F60000004CF3C0912239A50752.jpg"
     222style="width:9.648cm;height:0.968cm" /></p>
     223<p><img src="Pictures/1000000000000677000000669B34794C6F20D39F.jpg"
     224style="width:17cm;height:1.048cm" /></p>
     225<p><img src="Pictures/10000000000006500000015EAFD79F098D9662E2.jpg"
     226style="width:17cm;height:3.681cm" /></p>
     227<ol type="1">
     228<li>Времето изминато во извршување на операцијата update по индексирање
     229изнесува</li>
     230</ol>
     231<p><img src="Pictures/10000000000003F90000007E7133EA0A4E6F0A26.jpg"
     232style="width:17cm;height:2.106cm" /></p>
     233<p>View 7: Вкупна состојба на клиент</p>
     234<ol type="1">
     235<li><p><strong>Филтри:</strong> Примарен филтер за погледот
     236v_account_balance ќе биде според client_id.</p></li>
     237<li><p><strong>Употреба:</strong> Примарен случај на употреба е кога
     238клиентот сака да го провери балансот на своите сметки. Овде се битни
     239перформансите, затоа што сакаме апликацијата да функционира без
     240застој.</p></li>
     241<li><strong>Иницијално време:</strong> Иницијалното време за извршување
     242на овој поглед изнесува 88ms. Времето е мало и прифатливо, бидејќи
     243JOIN-овите се на примарни клучеви.</li>
     244</ol>
     245<p><img src="Pictures/10000000000004D900000055506AD095D2214B49.jpg"
     246style="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"
     252style="width:17cm;height:8.059cm" /></p>
     253<p><img src="Pictures/10000000000003D200000092E5B49A21A1412398.jpg"
     254style="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> Примарен филтер за погледот
     263v_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"
     276style="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"
     282style="width:17cm;height:3.177cm" /></p>
     283<ol type="1">
     284<li>Времето изминато во извршување на INSERT и UPDATE пред изнесува</li>
     285</ol>
     286<p><img src="Pictures/10000000000003ED000001E05427A309BA9386AE.jpg"
     287style="width:17cm;height:5.838cm" /></p>
     288<p><img src="Pictures/1000000000000396000000B2FB875366030EE4FA.jpg"
     289style="width:17cm;height:3.295cm" /></p>
     290<ol type="1">
     291<li>Времето изминато во извршување на query-то со индекси изнесува
     292597.9ms, и тоа е прифатливо време.</li>
     293</ol>
     294<p><img src="Pictures/100000000000028B000000F4A90034AFD5124592.png"
     295style="width:7.893cm;height:2.536cm" /></p>
     296<p><img src="Pictures/10000001000004D50000008CB21208A12DCDBD00.png"
     297style="width:17cm;height:1.923cm" /></p>
     298<p><img src="Pictures/10000000000006C5000000FCFBB682A570488546.jpg"
     299style="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"
     306style="width:17cm;height:6.075cm" /></p>
     307<p><img src="Pictures/1000000000000400000000B22FF79EF37E844CA3.png"
     308style="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>Иницијално време: Иницијалното време за извршување на овој поглед е
     317100ms, што е прифатливо, па затоа нема да имаме потреба од
     318индексирање.</li>
     319</ol>
     320<p><img src="Pictures/100000000000046D00000068DD81C2FCE1D7EB09.jpg"
     321style="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"
     327style="width:17cm;height:6.962cm" /></p>
     328<p><img src="Pictures/10000000000003F3000000860AFA968B82C6EA90.jpg"
     329style="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> Примарен филтер за погледот
     338v_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"
     347style="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"
     353style="width:17cm;height:6.167cm" /></p>
     354<p><img src="Pictures/10000000000003B4000000838C3C0ED6E89E3A87.jpg"
     355style="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> Примарен филтер за погледот
     364v_daily_branch_report ќе биде според branch_id, а дополнително и според
     365report_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"
     373style="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"
     379style="width:17cm;height:5.606cm" /></p>
     380<p><img src="Pictures/1000000000000390000000B15BCF0CC250B8B7A3.jpg"
     381style="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>