| Version 3 (modified by , 5 days ago) ( diff ) |
|---|
Оптимизација на прашалници и погледи
<p>Напредни бази на податоци</p> <p>Фаза 3 – Оптимизација на прашалници и погледи</p> <p>Име на проект: BankPaymentService</p> <p>View 1: Најава на корисник (Login view)</p> <ol type="1"> <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_user_login ќе биде според username, а дополнително се филтрира само на корисници со статус ACTIVE.</p></li> <li><p><strong>Употреба:</strong> е процесот на логирање на клиент во системот. Погледот обезбедува брз пристап до корисничкото име, и статусот на сметката.</p></li> <li><p><strong>Иницијално време:</strong> Иницијалното време за извршување на погледот е 0.315ms. Ова е прифатливо време за апликацијата.</p> <p><img src="Pictures/10000000000003EF0000004ED2C1203F968DA51D.png" style="width:16.365cm;height:1.266cm" /></p></li> <li><p>Најбавните операции се две Index Scan операции:<br /> Index Scan на табела client_user преку индексот client_user_username_key
- Actual Total Time: 0.039ms<br />
Index Scan на табела client преку индексот client_pkey - Actual Total Time: 0.013ms</p> <p>Вкупниот Nested Loop завршува за само 0.056ms. Бидејќи се работи за Index Scan (не Full Scan), операциите не можат значително да се подобрат со дополнителни индекси.</p></li> </ol> <p><img src="Pictures/100000000000064F000000C0BFBD9FAE9F14CCA1.jpg" style="width:17cm;height:2.02cm" /></p> <ol type="1"> <li><p>Времето изминато во извршување на операциите insert и update изнесува</p></li> </ol> <p><img src="Pictures/100000000000050E000001C13D4229315652A926.jpg" style="width:17cm;height:5.898cm" /></p> <p><img src="Pictures/1000000000000594000000BE9126B6B14C29B800.jpg" style="width:17cm;height:2.261cm" /></p> <ol type="1"> <li>Нема потреба да се преуреди прашалникот.</li> </ol> <ol type="1"> <li>Време на извршување на операциите insert и update останува исто.</li> </ol> <p>View 2: Извештаи (Receipt view)</p> <ol type="1"> <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_client_receipts ќе биде според client_id, а дополнително може да се користи и според transaction_date (по временски период - месец и година).</p></li> <li><p><strong>Употреба:</strong> Примарен случај на употреба е преглед на издадени сметки за клиент по одреден период. За овој поглед ни се важни перформансите, бидејќи без него се губи време при извршување.</p></li> <li><strong>Иницијално време:</strong> Иницијалното време за извршување на погледот e 705ms. Ова е прифатливо време за апликацијата.</li> </ol> <p><img src="Pictures/10000000000005380000003F5777FB357E41BC06.jpg" style="width:17cm;height:0.801cm" /></p> <ol type="1"> <li>Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е</li> </ol> <p><img src="Pictures/10000000000004410000021A019CAD870463A1BC.jpg" style="width:17cm;height:7.107cm" /></p> <p><img src="Pictures/10000000000004630000013DD4DCE6565EC0F2D0.jpg" style="width:17cm;height:4.798cm" /></p> <p><img src="Pictures/10000000000004060000008E0EA75E1943CAC590.jpg" style="width:17cm;height:2.342cm" /></p> <ol type="1"> <li>Нема потреба да се преуреди прашалникот.</li> </ol> <ol type="1"> <li><p>Време на извршување на операциите insert и update останува исто.</p></li> </ol> <p>View 3: Рати (Loan installments view)</p> <ol type="1"> <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_loan_installments ќе биде според loan_id.</p></li> <li><p><strong>Употреба:</strong> Примарен случај на употреба е кога клиентот или банкарскиот персонал сака да ги прегледа ратите за конкретен кредит. За овој поглед ни се важни перформансите.</p></li> <li><strong>Иницијално време:</strong> Иницијалното време за извршување на погледот е 250.5ms. Ова е прифатливо време за апликацијата.</li> </ol> <p><img src="Pictures/10000000000003C30000005104A77B128B569F7F.jpg" style="width:17cm;height:1.429cm" /></p> <ol type="1"> <li>Нема потреба од правење план на извршување, бидејќи времето е задоволително. Пребарувањето по loan_id секогаш враќа мал број рати за конкретен кредит, па табелата не се пребарува со висока фреквенција истовремено. Времето на операциите insert и update изнесува</li> </ol> <p><img src="Pictures/100000000000033C0000024C414CCA13AFC79A5B.jpg" style="width:17cm;height:8.209cm" /></p> <p><img src="Pictures/1000000000000399000000D00CBD0F8B690447A5.jpg" style="width:17cm;height:3.838cm" /></p> <ol type="1"> <li><p>Нема потреба да се преуреди прашалникот.</p></li> <li>Времето на извршување на операциите insert и update останува исто.</li> </ol> <p>View 4: Преглед на кредити</p> <ol type="1"> <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_loan_details ќе биде според loan_id, а исто така и според client_id.</p></li> <li><p><strong>Употреба:</strong> Примарен случај на употреба е целосен преглед на кредитна апликација. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.</p></li> <li><strong>Иницијално време:</strong> Иницијалното време за извршување на погледот e 1s 735ms. Времето е побавно поради повеќе JOIN операции и full scan на табелите Account и Collateral. Ова не е прифатливо за апликацијата.</li> </ol> <p><img src="Pictures/10000000000003B500000073DEBE475DBBF0F7AF.jpg" style="width:17cm;height:2.058cm" /></p> <ol type="1"> <li><p>Најбавните операции се JOIN-овите на Account и Collateral преку loan_id, кои немаат индекси на надворешниот клуч. </p></li> </ol> <p><img src="Pictures/100000000000061700000258882EDFAC4AA56D07.jpg" style="width:17cm;height:6.542cm" /></p> <ol type="1"> <li>Времето изминато во извршување на операциите insert и update изнесува</li> </ol> <p><img src="Pictures/10000000000003AC00000210E2D9E277C5823FC1.jpg" style="width:17cm;height:6.816cm" /></p> <p><img src="Pictures/100000000000034E0000009629B94CAC106DBB61.jpg" style="width:17cm;height:3.013cm" /></p> <ol type="1"> <li>Времето изминато во извршување на query-то со индекси изнесува 781ms, и тоа е прифатливо време.</li> </ol> <p><img src="Pictures/10000000000001800000004B0572BB5F6DC462A8.jpg" style="width:8.128cm;height:1.588cm" /></p> <p><img src="Pictures/100000000000037C0000005925F28C4AEA5E55BD.jpg" style="width:17cm;height:1.695cm" /></p> <p><img src="Pictures/10000000000005EE000002376351195B9D922B9F.jpg" style="width:17cm;height:6.348cm" /></p> <ol type="1"> <li><p>Времето изминато во извршување на операцијата update по</p> <p>индексирање изнесува</p></li> </ol> <p><img src="Pictures/100000000000037D0000009B46AC848D94C27370.jpg" style="width:17cm;height:2.949cm" /></p> <p><strong></strong></p> <p>View 5: Трансфери меѓу сметки, трансакции</p> <ol type="1"> <li></li> <li><p>Филтри: Примарен филтер за погледот v_client_transfers ќе биде според sender_client_id, а дополнително и според transaction_date.</p></li> <li><p><strong>Употреба: </strong>Примарен случај на употреба е кога клиентот сака да ги прегледа своите извршени трансфери. За овој поглед ни се важни перформансите.</p></li> <li><strong>Иницијално време:</strong> Иницијалното време за извршување на погледот е 68ms. Времето е прифатливо, бидејќи JOIN операциите се базираат на примарни и надворешни клучеви кои веќе имаат индекси.</li> </ol> <p><img src="Pictures/10000000000004F100000049FD9EBED2C7D658AE.jpg" style="width:17cm;height:0.981cm" /></p> <ol type="1"> <li>Најбавните операции не претставуваат значителен проблем. Двојниот JOIN на Account и Client (за испраќач и примач) се изведува ефикасно преку постојните индекси.</li> </ol> <p><img src="Pictures/100000000000064B000002140C05B7A84E27CDEE.jpg" style="width:17cm;height:5.613cm" /></p> <ol type="1"> <li>Времето на операциите insert и update изнесува</li> </ol> <p><img src="Pictures/100000000000043B0000031DE6C67FC442B989C9.jpg" style="width:17cm;height:8.416cm" /></p> <p><img src="Pictures/1000000000000402000000AC9910924A674E0141.jpg" style="width:17cm;height:2.849cm" /></p> <ol type="1"> <li><p>Нема потреба да се преуредува прашалникот.</p></li> <li>Времето на извршување на операциите insert и update останува исто.</li> </ol> <p>View 6: Сомнителни трансакции</p> <ol type="1"> <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_suspicious_transactions е </p> <p>amount > 9000 AND status IN ('PENDING', 'FAILED').</p></li> <li><p><strong>Употреба:</strong> Примарен случај на употреба е мониторинг на потенцијално сомнителна активност (AML). За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.</p></li> <li><strong>Иницијално време:</strong> Иницијалното време за извршување на погледот е 8s 15ms. Времето за извршување е побавно поради full scan на табелата Transaction за да се пронајдат записите со висок износ. Ова не е прифатливо за апликацијата, па затоа пристапуваме кон индексирање.</li> </ol> <p><img src="Pictures/100000000000054500000061340BA08FFB7A632E.jpg" style="width:17cm;height:1.222cm" /></p> <ol type="1"> <li>Најбавните операции се full scan на Transaction за филтрирање по amount и status, и JOIN со Account без индекс на client_id.</li> </ol> <p><img src="Pictures/10000000000006750000013276780519839AF461.jpg" style="width:17cm;height:3.147cm" /></p> <ol type="1"> <li>Времето изминато во извршување на insert и update изнесува</li> </ol> <p><img src="Pictures/100000000000041000000280E36A992C95632EB6.jpg" style="width:17cm;height:7.523cm" /></p> <p><img src="Pictures/10000000000003F10000007118EB86F80F8A6DF8.jpg" style="width:17cm;height:1.903cm" /></p> <ol type="1"> <li>Времето изминато во извршување на query-то со индекси изнесува 669ms, и тоа е прифатливо време.</li> </ol> <p><img src="Pictures/10000000000002F60000004CF3C0912239A50752.jpg" style="width:9.648cm;height:0.968cm" /></p> <p><img src="Pictures/1000000000000677000000669B34794C6F20D39F.jpg" style="width:17cm;height:1.048cm" /></p> <p><img src="Pictures/10000000000006500000015EAFD79F098D9662E2.jpg" style="width:17cm;height:3.681cm" /></p> <ol type="1"> <li>Времето изминато во извршување на операцијата update по индексирање изнесува</li> </ol> <p><img src="Pictures/10000000000003F90000007E7133EA0A4E6F0A26.jpg" style="width:17cm;height:2.106cm" /></p> <p>View 7: Вкупна состојба на клиент</p> <ol type="1"> <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_account_balance ќе биде според client_id.</p></li> <li><p><strong>Употреба:</strong> Примарен случај на употреба е кога клиентот сака да го провери балансот на своите сметки. Овде се битни перформансите, затоа што сакаме апликацијата да функционира без застој.</p></li> <li><strong>Иницијално време:</strong> Иницијалното време за извршување на овој поглед изнесува 88ms. Времето е мало и прифатливо, бидејќи JOIN-овите се на примарни клучеви.</li> </ol> <p><img src="Pictures/10000000000004D900000055506AD095D2214B49.jpg" style="width:17cm;height:1.164cm" /></p> <ol type="1"> <li>Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операции insert и update изнесува</li> </ol> <p><img src="Pictures/10000000000003850000024BC2B9206C5806DF69.jpg" style="width:17cm;height:8.059cm" /></p> <p><img src="Pictures/10000000000003D200000092E5B49A21A1412398.jpg" style="width:17cm;height:2.536cm" /></p> <ol type="1"> <li><p>Нема потреба да се преуреди прашалникот.</p></li> <li>Време на извршување на операциите insert и update останува исто.</li> </ol> <p>View 8: Следење на доцнења (Loan Default Monitoring)</p> <ol type="1"> <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_loan_default_monitoring ќе биде според installment_status IN ('PENDING','LATE') и due_date, со услов paid_date IS NULL.</p></li> <li><p><strong>Употреба:</strong> Примарен случај на употреба е кога банкарскиот персонал сака да ги идентификува клиентите кои задоцниле со плаќање. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.</p></li> <li><p><strong>Иницијално време:</strong> Иницијалното време за извршување на погледот е 9s 289ms. Иницијалното време за извршување на погледот беше побавно поради full scan на табелата Loan_installment. Ова не е прифатливо време за апликацијата па затоа пристапуваме кон индексирање.</p></li> </ol> <p><img src="Pictures/10000001000005ED000000AD30C01F97CF8CBBC8.png" style="width:17cm;height:1.939cm" /></p> <ol type="1"> <li>Најбавните операции се full scan на Loan_installment без филтрирање на платените рати, и JOIN со Account без covering индекс.</li> </ol> <p><img src="Pictures/10000000000005CA00000115FDFDC84593A4B3CD.jpg" style="width:17cm;height:3.177cm" /></p> <ol type="1"> <li>Времето изминато во извршување на INSERT и UPDATE пред изнесува</li> </ol> <p><img src="Pictures/10000000000003ED000001E05427A309BA9386AE.jpg" style="width:17cm;height:5.838cm" /></p> <p><img src="Pictures/1000000000000396000000B2FB875366030EE4FA.jpg" style="width:17cm;height:3.295cm" /></p> <ol type="1"> <li>Времето изминато во извршување на query-то со индекси изнесува 597.9ms, и тоа е прифатливо време.</li> </ol> <p><img src="Pictures/100000000000028B000000F4A90034AFD5124592.png" style="width:7.893cm;height:2.536cm" /></p> <p><img src="Pictures/10000001000004D50000008CB21208A12DCDBD00.png" style="width:17cm;height:1.923cm" /></p> <p><img src="Pictures/10000000000006C5000000FCFBB682A570488546.jpg" style="width:17cm;height:2.471cm" /></p> <ol type="1"> <li><p>Времето изминато во извршување на операциите insert и update по</p> <p>индексирање изнесува</p></li> </ol> <p><img src="Pictures/10000001000003AF000001D24A4EE3398BCFA135.png" style="width:17cm;height:6.075cm" /></p> <p><img src="Pictures/1000000000000400000000B22FF79EF37E844CA3.png" style="width:17cm;height:2.955cm" /></p> <p>View 9: Accounts (сметки)</p> <ol type="1"> <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_accounts ќе биде според client_id.</p></li> <li><p><strong>Употреба:</strong> Примарен случај на употреба е преглед на сите сметки на клиент при услуги на шалтер. Овде се битни перформансите.</p></li> <li>Иницијално време: Иницијалното време за извршување на овој поглед е 100ms, што е прифатливо, па затоа нема да имаме потреба од индексирање.</li> </ol> <p><img src="Pictures/100000000000046D00000068DD81C2FCE1D7EB09.jpg" style="width:17cm;height:1.559cm" /></p> <ol type="1"> <li>Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е</li> </ol> <p><img src="Pictures/100000000000038200000248548DB7D2D549A33D.jpg" style="width:17cm;height:6.962cm" /></p> <p><img src="Pictures/10000000000003F3000000860AFA968B82C6EA90.jpg" style="width:17cm;height:2.252cm" /></p> <ol type="1"> <li><p>Нема потреба да се преуредува прашалникот.</p></li> <li>Времето на извршување на операциите insert и update останува исто.</li> </ol> <p>View 10: Камати по штедни сметки</p> <ol type="1"> <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_savings_interest_payments ќе биде според client_id.</p></li> <li><p><strong>Употреба:</strong> Примарен случај на употреба е кога клиентот сака да ги прегледа добиените камати по период. Овде се важни перформансите.</p></li> <li><strong>Иницијално време:</strong> Иницијалното време за извршување на овој поглед е 214ms, што е прифатливо, па затоа нема да имаме потреба од индексирање.</li> </ol> <p><img src="Pictures/10000000000004580000006A5F91B9E27481DBDD.jpg" style="width:17cm;height:1.619cm" /></p> <ol type="1"> <li>Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е</li> </ol> <p><img src="Pictures/10000000000003AA000001DAFA05C124F81E3682.jpg" style="width:17cm;height:6.167cm" /></p> <p><img src="Pictures/10000000000003B4000000838C3C0ED6E89E3A87.jpg" style="width:17cm;height:2.348cm" /></p> <ol type="1"> <li><p>Нема потреба да се преуредува прашалникот.</p></li> <li>Времето на извршување на операциите insert и update останува исто.</li> </ol> <p>View 11: Дневен извештај на филијала</p> <ol type="1"> <li><p><strong>Филтри:</strong> Примарен филтер за погледот v_daily_branch_report ќе биде според branch_id, а дополнително и според report_date.</p></li> <li><p><strong>Употреба:</strong> Примарен случај на употреба е кога раководството на филијалата или централниот менаџмент сака да ги следи дневните активности. Овде се битни перформансите.</p></li> <li><strong>Иницијално време:</strong> Иницијалното време за извршување на погледот е 385ms. Ова е прифатливо време за апликацијата.</li> </ol> <p><img src="Pictures/10000000000004CD0000005837F076E81A00A27E.jpg" style="width:17cm;height:1.217cm" /></p> <ol type="1"> <li>Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е </li> </ol> <p><img src="Pictures/10000000000003990000016FF5837C3A51BAC6D2.jpg" style="width:17cm;height:5.606cm" /></p> <p><img src="Pictures/1000000000000390000000B15BCF0CC250B8B7A3.jpg" style="width:17cm;height:3.298cm" /></p> <ol type="1"> <li><p>Нема потреба да се преуредува прашалникот.</p></li> <li>Времето на извршување на операциите insert и update останува исто.</li> </ol> <p>Членови на тим:</p> <p>Михаела Ковчегарска 231068</p> <p>Јована Мечева 231124</p> <p>Емилија Костова 231107</p>
Attachments (53)
- OptimizacijaPrashalniciPogledi.pdf (2.8 MB ) - added by 7 days ago.
- insert_.JPG (38.2 KB ) - added by 5 days ago.
- update_.JPG (39.2 KB ) - added by 5 days ago.
- v_user_login_et.JPG (8.7 KB ) - added by 5 days ago.
- v_user_login_fullsc_paint.jpg (72.7 KB ) - added by 5 days ago.
- client_receipts.JPG (15.0 KB ) - added by 5 days ago.
- insert_transaction.JPG (38.8 KB ) - added by 5 days ago.
- insert_receipt.JPG (27.3 KB ) - added by 5 days ago.
- update_transaction.JPG (17.4 KB ) - added by 5 days ago.
- v_loan_installment_et.JPG (12.6 KB ) - added by 5 days ago.
- update.JPG (20.4 KB ) - added by 5 days ago.
- insert.JPG (29.1 KB ) - added by 5 days ago.
- v_loan_details_et.JPG (13.6 KB ) - added by 5 days ago.
- v_loan_details_fullsc_paint.jpg (214.8 KB ) - added by 5 days ago.
- insert_v_loan.JPG (29.6 KB ) - added by 5 days ago.
- update_v_loan.JPG (15.5 KB ) - added by 5 days ago.
- index_v_loan.JPG (8.3 KB ) - added by 5 days ago.
- v_loan_details_et_index.JPG (11.4 KB ) - added by 5 days ago.
- v_loan_details_fullsc_index_paint.jpg (200.1 KB ) - added by 5 days ago.
- update_index.JPG (17.0 KB ) - added by 5 days ago.
- v_client_transfers_et.JPG (15.6 KB ) - added by 5 days ago.
- v_client_transfers_fullsc.JPG (109.6 KB ) - added by 5 days ago.
- insert_v_client_transfers.JPG (56.6 KB ) - added by 5 days ago.
- update_v_client_transfers.JPG (18.4 KB ) - added by 5 days ago.
- v_sus_et.JPG (17.5 KB ) - added by 5 days ago.
- v_sus_fullsc_paint.jpg (111.7 KB ) - added by 5 days ago.
- insert_v_sus.JPG (38.8 KB ) - added by 5 days ago.
- update_v_sus.JPG (16.3 KB ) - added by 5 days ago.
- index_v_sus.JPG (12.8 KB ) - added by 5 days ago.
- v_sus_et_index.JPG (24.3 KB ) - added by 5 days ago.
- v_sus_fullsc_index_paint.jpg (126.9 KB ) - added by 5 days ago.
- update_index_v_sus.JPG (17.2 KB ) - added by 5 days ago.
- v_account_balance_et.JPG (13.5 KB ) - added by 5 days ago.
- insert_v_account_balance.JPG (30.9 KB ) - added by 5 days ago.
- update_v_account_balance.JPG (20.4 KB ) - added by 5 days ago.
- loan_monitoring_et.png (40.0 KB ) - added by 5 days ago.
- v_loan_monitoring_fullsc_paint.jpg (129.8 KB ) - added by 5 days ago.
- insert_loan_def.JPG (27.3 KB ) - added by 5 days ago.
- update_loan_def.JPG (18.9 KB ) - added by 5 days ago.
- index_loan_def.jpg (10.6 KB ) - added by 5 days ago.
- v_loan_default_monitoring_index_et.png (29.6 KB ) - added by 5 days ago.
- v_loan_monitoring_fullsc_index_paint.jpg (129.6 KB ) - added by 5 days ago.
- v_loan_monitoring_ins_aft_index.png (34.9 KB ) - added by 5 days ago.
- v_loan_monitoring_index_update.jpg (9.0 KB ) - added by 5 days ago.
- v_account_et.JPG (13.3 KB ) - added by 5 days ago.
- insert_acc.JPG (30.9 KB ) - added by 5 days ago.
- update_acc.JPG (16.3 KB ) - added by 5 days ago.
- v_savings_interest_payments_et.JPG (14.1 KB ) - added by 5 days ago.
- insert_sip.JPG (28.5 KB ) - added by 5 days ago.
- update_sip.JPG (17.6 KB ) - added by 5 days ago.
- v_daily_branch_report_et.JPG (11.3 KB ) - added by 5 days ago.
- insert_v_daily.JPG (24.5 KB ) - added by 5 days ago.
- update_v_daily.JPG (18.4 KB ) - added by 5 days ago.
