Changes between Version 9 and Version 10 of Оптимизација на прашалници и погледи
- Timestamp:
- 05/20/26 23:10:26 (5 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Оптимизација на прашалници и погледи
v9 v10 5 5 1. '''Филтри:''' Примарен филтер за погледот `v_user_login` ќе биде според `username`, а дополнително се филтрира само на корисници со статус `ACTIVE`. 6 6 7 *'''Употреба:''' е процесот на логирање на клиент во системот. Погледот обезбедува брз пристап до корисничкото име, и статусот на сметката.7 2. '''Употреба:''' е процесот на логирање на клиент во системот. Погледот обезбедува брз пристап до корисничкото име, и статусот на сметката. 8 8 9 *'''Иницијално време:''' Иницијалното време за извршување на погледот е 0.315ms. Ова е прифатливо време за апликацијата.9 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 0.315ms. Ова е прифатливо време за апликацијата. 10 10 11 *Најбавните операции се две Index Scan операции:11 4. Најбавните операции се две Index Scan операции: 12 12 * Index Scan на табела `client_user` преку индексот `client_user_username_key` - Actual Total Time: 0.039ms 13 13 * Index Scan на табела `client` преку индексот `client_pkey` - Actual Total Time: 0.013ms … … 17 17 * Времето изминато во извршување на операциите insert и update изнесува 18 18 19 *Нема потреба да се преуреди прашалникот.19 5. Нема потреба да се преуреди прашалникот. 20 20 21 *Време на извршување на операциите insert и update останува исто.21 6. Време на извршување на операциите insert и update останува исто. 22 22 23 23 24 24 === View 2: Извештаи (Receipt view) === 25 25 26 *'''Филтри:''' Примарен филтер за погледот `v_client_receipts` ќе биде според `client_id`, а дополнително може да се користи и според `transaction_date` (по временски период - месец и година).26 1. '''Филтри:''' Примарен филтер за погледот `v_client_receipts` ќе биде според `client_id`, а дополнително може да се користи и според `transaction_date` (по временски период - месец и година). 27 27 28 *'''Употреба:''' Примарен случај на употреба е преглед на издадени сметки за клиент по одреден период. За овој поглед ни се важни перформансите, бидејќи без него се губи време при извршување.28 2. '''Употреба:''' Примарен случај на употреба е преглед на издадени сметки за клиент по одреден период. За овој поглед ни се важни перформансите, бидејќи без него се губи време при извршување. 29 29 30 *'''Иницијално време:''' Иницијалното време за извршување на погледот e 705ms. Ова е прифатливо време за апликацијата.30 3. '''Иницијално време:''' Иницијалното време за извршување на погледот e 705ms. Ова е прифатливо време за апликацијата. 31 31 32 *Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е32 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е 33 33 34 *Нема потреба да се преуреди прашалникот.34 5. Нема потреба да се преуреди прашалникот. 35 35 36 *Време на извршување на операциите insert и update останува исто.36 6. Време на извршување на операциите insert и update останува исто. 37 37 38 38 39 39 === View 3: Рати (Loan installments view) === 40 40 41 *'''Филтри:''' Примарен филтер за погледот `v_loan_installments` ќе биде според `loan_id`.41 1. '''Филтри:''' Примарен филтер за погледот `v_loan_installments` ќе биде според `loan_id`. 42 42 43 *'''Употреба:''' Примарен случај на употреба е кога клиентот или банкарскиот персонал сака да ги прегледа ратите за конкретен кредит. За овој поглед ни се важни перформансите.43 2. '''Употреба:''' Примарен случај на употреба е кога клиентот или банкарскиот персонал сака да ги прегледа ратите за конкретен кредит. За овој поглед ни се важни перформансите. 44 44 45 *'''Иницијално време:''' Иницијалното време за извршување на погледот е 250.5ms. Ова е прифатливо време за апликацијата.45 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 250.5ms. Ова е прифатливо време за апликацијата. 46 46 47 *Нема потреба од правење план на извршување, бидејќи времето е задоволително. Пребарувањето по `loan_id` секогаш враќа мал број рати за конкретен кредит, па табелата не се пребарува со висока фреквенција истовремено. Времето на операциите insert и update изнесува47 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Пребарувањето по `loan_id` секогаш враќа мал број рати за конкретен кредит, па табелата не се пребарува со висока фреквенција истовремено. Времето на операциите insert и update изнесува 48 48 49 *Нема потреба да се преуреди прашалникот.49 5. Нема потреба да се преуреди прашалникот. 50 50 51 *Времето на извршување на операциите insert и update останува исто.51 6. Времето на извршување на операциите insert и update останува исто. 52 52 53 53 54 54 === View 4: Преглед на кредити === 55 55 56 *'''Филтри:''' Примарен филтер за погледот `v_loan_details` ќе биде според `loan_id`, а исто така и според `client_id`.56 1. '''Филтри:''' Примарен филтер за погледот `v_loan_details` ќе биде според `loan_id`, а исто така и според `client_id`. 57 57 58 *'''Употреба:''' Примарен случај на употреба е целосен преглед на кредитна апликација. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.58 2. '''Употреба:''' Примарен случај на употреба е целосен преглед на кредитна апликација. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување. 59 59 60 *'''Иницијално време:''' Иницијалното време за извршување на погледот e 1s 735ms. Времето е побавно поради повеќе JOIN операции и full scan на табелите Account и Collateral. Ова не е прифатливо за апликацијата.60 3. '''Иницијално време:''' Иницијалното време за извршување на погледот e 1s 735ms. Времето е побавно поради повеќе JOIN операции и full scan на табелите Account и Collateral. Ова не е прифатливо за апликацијата. 61 61 62 *Најбавните операции се JOIN-овите на Account и Collateral преку `loan_id`, кои немаат индекси на надворешниот клуч.62 4. Најбавните операции се JOIN-овите на Account и Collateral преку `loan_id`, кои немаат индекси на надворешниот клуч. 63 63 64 64 * Времето изминато во извршување на операциите insert и update изнесува 65 65 66 *Времето изминато во извршување на query-то со индекси изнесува 781ms, и тоа е прифатливо време.66 5. Времето изминато во извршување на query-то со индекси изнесува 781ms, и тоа е прифатливо време. 67 67 68 *Времето изминато во извршување на операцијата update по индексирање изнесува68 6. Времето изминато во извршување на операцијата update по индексирање изнесува 69 69 70 70 71 71 === View 5: Трансфери меѓу сметки, трансакции === 72 72 73 *'''Филтри:''' Примарен филтер за погледот `v_client_transfers` ќе биде според `sender_client_id`, а дополнително и според `transaction_date`.73 1. '''Филтри:''' Примарен филтер за погледот `v_client_transfers` ќе биде според `sender_client_id`, а дополнително и според `transaction_date`. 74 74 75 *'''Употреба:''' Примарен случај на употреба е кога клиентот сака да ги прегледа своите извршени трансфери. За овој поглед ни се важни перформансите.75 2. '''Употреба:''' Примарен случај на употреба е кога клиентот сака да ги прегледа своите извршени трансфери. За овој поглед ни се важни перформансите. 76 76 77 *'''Иницијално време:''' Иницијалното време за извршување на погледот е 68ms. Времето е прифатливо, бидејќи JOIN операциите се базираат на примарни и надворешни клучеви кои веќе имаат индекси.77 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 68ms. Времето е прифатливо, бидејќи JOIN операциите се базираат на примарни и надворешни клучеви кои веќе имаат индекси. 78 78 79 *Најбавните операции не претставуваат значителен проблем. Двојниот JOIN на Account и Client (за испраќач и примач) се изведува ефикасно преку постојните индекси.79 4. Најбавните операции не претставуваат значителен проблем. Двојниот JOIN на Account и Client (за испраќач и примач) се изведува ефикасно преку постојните индекси. 80 80 81 81 * Времето на операциите insert и update изнесува 82 82 83 *Нема потреба да се преуредува прашалникот.83 5. Нема потреба да се преуредува прашалникот. 84 84 85 *Времето на извршување на операциите insert и update останува исто.85 6. Времето на извршување на операциите insert и update останува исто. 86 86 87 87 88 88 === View 6: Сомнителни трансакции === 89 89 90 *'''Филтри:''' Примарен филтер за погледот `v_suspicious_transactions` е `amount > 9000 AND status IN ('PENDING', 'FAILED')`.90 1. '''Филтри:''' Примарен филтер за погледот `v_suspicious_transactions` е `amount > 9000 AND status IN ('PENDING', 'FAILED')`. 91 91 92 *'''Употреба:''' Примарен случај на употреба е мониторинг на потенцијално сомнителна активност (AML). За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.92 2. '''Употреба:''' Примарен случај на употреба е мониторинг на потенцијално сомнителна активност (AML). За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување. 93 93 94 *'''Иницијално време:''' Иницијалното време за извршување на погледот е 8s 15ms. Времето за извршување е побавно поради full scan на табелата Transaction за да се пронајдат записите со висок износ. Ова не е прифатливо за апликацијата, па затоа пристапуваме кон индексирање.94 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 8s 15ms. Времето за извршување е побавно поради full scan на табелата Transaction за да се пронајдат записите со висок износ. Ова не е прифатливо за апликацијата, па затоа пристапуваме кон индексирање. 95 95 96 *Најбавните операции се full scan на Transaction за филтрирање по `amount` и `status`, и JOIN со Account без индекс на `client_id`.96 4. Најбавните операции се full scan на Transaction за филтрирање по `amount` и `status`, и JOIN со Account без индекс на `client_id`. 97 97 98 98 * Времето изминато во извршување на insert и update изнесува 99 99 100 *Времето изминато во извршување на query-то со индекси изнесува 669ms, и тоа е прифатливо време.100 5. Времето изминато во извршување на query-то со индекси изнесува 669ms, и тоа е прифатливо време. 101 101 102 *Времето изминато во извршување на операцијата update по индексирање изнесува102 6. Времето изминато во извршување на операцијата update по индексирање изнесува 103 103 104 104 105 105 === View 7: Вкупна состојба на клиент === 106 106 107 *'''Филтри:''' Примарен филтер за погледот `v_account_balance` ќе биде според `client_id`.107 1. '''Филтри:''' Примарен филтер за погледот `v_account_balance` ќе биде според `client_id`. 108 108 109 *'''Употреба:''' Примарен случај на употреба е кога клиентот сака да го провери балансот на своите сметки. Овде се битни перформансите, затоа што сакаме апликацијата да функционира без застој.109 2. '''Употреба:''' Примарен случај на употреба е кога клиентот сака да го провери балансот на своите сметки. Овде се битни перформансите, затоа што сакаме апликацијата да функционира без застој. 110 110 111 *'''Иницијално време:''' Иницијалното време за извршување на овој поглед изнесува 88ms. Времето е мало и прифатливо, бидејќи JOIN-овите се на примарни клучеви.111 3. '''Иницијално време:''' Иницијалното време за извршување на овој поглед изнесува 88ms. Времето е мало и прифатливо, бидејќи JOIN-овите се на примарни клучеви. 112 112 113 *Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операции insert и update изнесува113 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операции insert и update изнесува 114 114 115 *Нема потреба да се преуреди прашалникот.115 5. Нема потреба да се преуреди прашалникот. 116 116 117 *Време на извршување на операциите insert и update останува исто.117 6. Време на извршување на операциите insert и update останува исто. 118 118 119 119 … … 121 121 === View 8: Следење на доцнења (Loan Default Monitoring) === 122 122 123 *'''Филтри:''' Примарен филтер за погледот `v_loan_default_monitoring` ќе биде според `installment_status IN ('PENDING','LATE')` и `due_date`, со услов `paid_date IS NULL`.123 1. '''Филтри:''' Примарен филтер за погледот `v_loan_default_monitoring` ќе биде според `installment_status IN ('PENDING','LATE')` и `due_date`, со услов `paid_date IS NULL`. 124 124 125 *'''Употреба:''' Примарен случај на употреба е кога банкарскиот персонал сака да ги идентификува клиентите кои задоцниле со плаќање. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.125 2. '''Употреба:''' Примарен случај на употреба е кога банкарскиот персонал сака да ги идентификува клиентите кои задоцниле со плаќање. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување. 126 126 127 *'''Иницијално време:''' Иницијалното време за извршување на погледот е 9s 289ms. Иницијалното време за извршување на погледот беше побавно поради full scan на табелата Loan_installment. Ова не е прифатливо време за апликацијата па затоа пристапуваме кон индексирање.127 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 9s 289ms. Иницијалното време за извршување на погледот беше побавно поради full scan на табелата Loan_installment. Ова не е прифатливо време за апликацијата па затоа пристапуваме кон индексирање. 128 128 129 *Најбавните операции се full scan на `Loan_installment` без филтрирање на платените рати, и JOIN со Account без covering индекс.129 4. Најбавните операции се full scan на `Loan_installment` без филтрирање на платените рати, и JOIN со Account без covering индекс. 130 130 131 131 * Времето изминато во извршување на INSERT и UPDATE пред изнесува 132 132 133 *Времето изминато во извршување на query-то со индекси изнесува 597.9ms, и тоа е прифатливо време.133 5. Времето изминато во извршување на query-то со индекси изнесува 597.9ms, и тоа е прифатливо време. 134 134 135 *Времето изминато во извршување на операциите insert и update по индексирање изнесува135 6. Времето изминато во извршување на операциите insert и update по индексирање изнесува 136 136 137 137 138 138 === View 9: Accounts (сметки) === 139 139 140 *'''Филтри:''' Примарен филтер за погледот `v_accounts` ќе биде според `client_id`.140 1. '''Филтри:''' Примарен филтер за погледот `v_accounts` ќе биде според `client_id`. 141 141 142 *'''Употреба:''' Примарен случај на употреба е преглед на сите сметки на клиент при услуги на шалтер. Овде се битни перформансите.142 2. '''Употреба:''' Примарен случај на употреба е преглед на сите сметки на клиент при услуги на шалтер. Овде се битни перформансите. 143 143 144 *'''Иницијално време:''' Иницијалното време за извршување на овој поглед е 100ms, што е прифатливо, па затоа нема да имаме потреба од индексирање.144 3. '''Иницијално време:''' Иницијалното време за извршување на овој поглед е 100ms, што е прифатливо, па затоа нема да имаме потреба од индексирање. 145 145 146 *Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е146 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е 147 147 148 *Нема потреба да се преуредува прашалникот.148 5. Нема потреба да се преуредува прашалникот. 149 149 150 *Времето на извршување на операциите insert и update останува исто.150 6. Времето на извршување на операциите insert и update останува исто. 151 151 152 152 153 153 === View 10: Камати по штедни сметки === 154 154 155 *'''Филтри:''' Примарен филтер за погледот `v_savings_interest_payments` ќе биде според `client_id`.155 1. '''Филтри:''' Примарен филтер за погледот `v_savings_interest_payments` ќе биде според `client_id`. 156 156 157 *'''Употреба:''' Примарен случај на употреба е кога клиентот сака да ги прегледа добиените камати по период. Овде се важни перформансите.157 2. '''Употреба:''' Примарен случај на употреба е кога клиентот сака да ги прегледа добиените камати по период. Овде се важни перформансите. 158 158 159 *'''Иницијално време:''' Иницијалното време за извршување на овој поглед е 214ms, што е прифатливо, па затоа нема да имаме потреба од индексирање.159 3. '''Иницијално време:''' Иницијалното време за извршување на овој поглед е 214ms, што е прифатливо, па затоа нема да имаме потреба од индексирање. 160 160 161 *Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е161 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е 162 162 163 *Нема потреба да се преуредува прашалникот.163 5. Нема потреба да се преуредува прашалникот. 164 164 165 *Времето на извршување на операциите insert и update останува исто.165 6. Времето на извршување на операциите insert и update останува исто. 166 166 167 167 168 168 === View 11: Дневен извештај на филијала === 169 169 170 *'''Филтри:''' Примарен филтер за погледот `v_daily_branch_report` ќе биде според `branch_id`, а дополнително и според `report_date`.170 1. '''Филтри:''' Примарен филтер за погледот `v_daily_branch_report` ќе биде според `branch_id`, а дополнително и според `report_date`. 171 171 172 *'''Употреба:''' Примарен случај на употреба е кога раководството на филијалата или централниот менаџмент сака да ги следи дневните активности. Овде се битни перформансите.172 2. '''Употреба:''' Примарен случај на употреба е кога раководството на филијалата или централниот менаџмент сака да ги следи дневните активности. Овде се битни перформансите. 173 173 174 *'''Иницијално време:''' Иницијалното време за извршување на погледот е 385ms. Ова е прифатливо време за апликацијата.174 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 385ms. Ова е прифатливо време за апликацијата. 175 175 176 *Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е176 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е 177 177 178 *Нема потреба да се преуредува прашалникот.178 5. Нема потреба да се преуредува прашалникот. 179 179 180 *Времето на извршување на операциите insert и update останува исто.180 6. Времето на извршување на операциите insert и update останува исто. 181 181 182 182
