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


Ignore:
Timestamp:
05/20/26 23:10:26 (5 days ago)
Author:
231068
Comment:

--

Legend:

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

    v9 v10  
    55 1. '''Филтри:''' Примарен филтер за погледот `v_user_login` ќе биде според `username`, а дополнително се филтрира само на корисници со статус `ACTIVE`.
    66
    7  * '''Употреба:''' е процесот на логирање на клиент во системот. Погледот обезбедува брз пристап до корисничкото име, и статусот на сметката.
     7 2. '''Употреба:''' е процесот на логирање на клиент во системот. Погледот обезбедува брз пристап до корисничкото име, и статусот на сметката.
    88
    9  * '''Иницијално време:''' Иницијалното време за извршување на погледот е 0.315ms. Ова е прифатливо време за апликацијата.
     9 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 0.315ms. Ова е прифатливо време за апликацијата.
    1010
    11  * Најбавните операции се две Index Scan операции:
     11 4. Најбавните операции се две Index Scan операции:
    1212   * Index Scan на табела `client_user` преку индексот `client_user_username_key` - Actual Total Time: 0.039ms
    1313   * Index Scan на табела `client` преку индексот `client_pkey` - Actual Total Time: 0.013ms
     
    1717 * Времето изминато во извршување на операциите insert и update изнесува
    1818
    19  * Нема потреба да се преуреди прашалникот.
     19 5. Нема потреба да се преуреди прашалникот.
    2020
    21  * Време на извршување на операциите insert и update останува исто.
     21 6. Време на извршување на операциите insert и update останува исто.
    2222
    2323
    2424=== View 2: Извештаи (Receipt view) ===
    2525
    26  * '''Филтри:''' Примарен филтер за погледот `v_client_receipts` ќе биде според `client_id`, а дополнително може да се користи и според `transaction_date` (по временски период - месец и година).
     26 1. '''Филтри:''' Примарен филтер за погледот `v_client_receipts` ќе биде според `client_id`, а дополнително може да се користи и според `transaction_date` (по временски период - месец и година).
    2727
    28  * '''Употреба:''' Примарен случај на употреба е преглед на издадени сметки за клиент по одреден период. За овој поглед ни се важни перформансите, бидејќи без него се губи време при извршување.
     28 2. '''Употреба:''' Примарен случај на употреба е преглед на издадени сметки за клиент по одреден период. За овој поглед ни се важни перформансите, бидејќи без него се губи време при извршување.
    2929
    30  * '''Иницијално време:''' Иницијалното време за извршување на погледот e 705ms. Ова е прифатливо време за апликацијата.
     30 3. '''Иницијално време:''' Иницијалното време за извршување на погледот e 705ms. Ова е прифатливо време за апликацијата.
    3131
    32  * Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е
     32 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е
    3333
    34  * Нема потреба да се преуреди прашалникот.
     34 5. Нема потреба да се преуреди прашалникот.
    3535
    36  * Време на извршување на операциите insert и update останува исто.
     36 6. Време на извршување на операциите insert и update останува исто.
    3737
    3838
    3939=== View 3: Рати (Loan installments view) ===
    4040
    41  * '''Филтри:''' Примарен филтер за погледот `v_loan_installments` ќе биде според `loan_id`.
     41 1. '''Филтри:''' Примарен филтер за погледот `v_loan_installments` ќе биде според `loan_id`.
    4242
    43  * '''Употреба:''' Примарен случај на употреба е кога клиентот или банкарскиот персонал сака да ги прегледа ратите за конкретен кредит. За овој поглед ни се важни перформансите.
     43 2. '''Употреба:''' Примарен случај на употреба е кога клиентот или банкарскиот персонал сака да ги прегледа ратите за конкретен кредит. За овој поглед ни се важни перформансите.
    4444
    45  * '''Иницијално време:''' Иницијалното време за извршување на погледот е 250.5ms. Ова е прифатливо време за апликацијата.
     45 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 250.5ms. Ова е прифатливо време за апликацијата.
    4646
    47  * Нема потреба од правење план на извршување, бидејќи времето е задоволително. Пребарувањето по `loan_id` секогаш враќа мал број рати за конкретен кредит, па табелата не се пребарува со висока фреквенција истовремено. Времето на операциите insert и update изнесува
     47 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Пребарувањето по `loan_id` секогаш враќа мал број рати за конкретен кредит, па табелата не се пребарува со висока фреквенција истовремено. Времето на операциите insert и update изнесува
    4848
    49  * Нема потреба да се преуреди прашалникот.
     49 5. Нема потреба да се преуреди прашалникот.
    5050
    51  * Времето на извршување на операциите insert и update останува исто.
     51 6. Времето на извршување на операциите insert и update останува исто.
    5252
    5353
    5454=== View 4: Преглед на кредити ===
    5555
    56  * '''Филтри:''' Примарен филтер за погледот `v_loan_details` ќе биде според `loan_id`, а исто така и според `client_id`.
     56 1. '''Филтри:''' Примарен филтер за погледот `v_loan_details` ќе биде според `loan_id`, а исто така и според `client_id`.
    5757
    58  * '''Употреба:''' Примарен случај на употреба е целосен преглед на кредитна апликација. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.
     58 2. '''Употреба:''' Примарен случај на употреба е целосен преглед на кредитна апликација. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.
    5959
    60  * '''Иницијално време:''' Иницијалното време за извршување на погледот e 1s 735ms. Времето е побавно поради повеќе JOIN операции и full scan на табелите Account и Collateral. Ова не е прифатливо за апликацијата.
     60 3. '''Иницијално време:''' Иницијалното време за извршување на погледот e 1s 735ms. Времето е побавно поради повеќе JOIN операции и full scan на табелите Account и Collateral. Ова не е прифатливо за апликацијата.
    6161
    62  * Најбавните операции се JOIN-овите на Account и Collateral преку `loan_id`, кои немаат индекси на надворешниот клуч.
     62 4. Најбавните операции се JOIN-овите на Account и Collateral преку `loan_id`, кои немаат индекси на надворешниот клуч.
    6363
    6464 * Времето изминато во извршување на операциите insert и update изнесува
    6565
    66  * Времето изминато во извршување на query-то со индекси изнесува 781ms, и тоа е прифатливо време.
     66 5. Времето изминато во извршување на query-то со индекси изнесува 781ms, и тоа е прифатливо време.
    6767
    68  * Времето изминато во извршување на операцијата update по индексирање изнесува
     68 6. Времето изминато во извршување на операцијата update по индексирање изнесува
    6969
    7070
    7171=== View 5: Трансфери меѓу сметки, трансакции ===
    7272
    73  * '''Филтри:''' Примарен филтер за погледот `v_client_transfers` ќе биде според `sender_client_id`, а дополнително и според `transaction_date`.
     73 1. '''Филтри:''' Примарен филтер за погледот `v_client_transfers` ќе биде според `sender_client_id`, а дополнително и според `transaction_date`.
    7474
    75  * '''Употреба:''' Примарен случај на употреба е кога клиентот сака да ги прегледа своите извршени трансфери. За овој поглед ни се важни перформансите.
     75 2. '''Употреба:''' Примарен случај на употреба е кога клиентот сака да ги прегледа своите извршени трансфери. За овој поглед ни се важни перформансите.
    7676
    77  * '''Иницијално време:''' Иницијалното време за извршување на погледот е 68ms. Времето е прифатливо, бидејќи JOIN операциите се базираат на примарни и надворешни клучеви кои веќе имаат индекси.
     77 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 68ms. Времето е прифатливо, бидејќи JOIN операциите се базираат на примарни и надворешни клучеви кои веќе имаат индекси.
    7878
    79  * Најбавните операции не претставуваат значителен проблем. Двојниот JOIN на Account и Client (за испраќач и примач) се изведува ефикасно преку постојните индекси.
     79 4. Најбавните операции не претставуваат значителен проблем. Двојниот JOIN на Account и Client (за испраќач и примач) се изведува ефикасно преку постојните индекси.
    8080
    8181 * Времето на операциите insert и update изнесува
    8282
    83  * Нема потреба да се преуредува прашалникот.
     83 5. Нема потреба да се преуредува прашалникот.
    8484
    85  * Времето на извршување на операциите insert и update останува исто.
     85 6. Времето на извршување на операциите insert и update останува исто.
    8686
    8787
    8888=== View 6: Сомнителни трансакции ===
    8989
    90  * '''Филтри:''' Примарен филтер за погледот `v_suspicious_transactions` е `amount > 9000 AND status IN ('PENDING', 'FAILED')`.
     90 1. '''Филтри:''' Примарен филтер за погледот `v_suspicious_transactions` е `amount > 9000 AND status IN ('PENDING', 'FAILED')`.
    9191
    92  * '''Употреба:''' Примарен случај на употреба е мониторинг на потенцијално сомнителна активност (AML). За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.
     92 2. '''Употреба:''' Примарен случај на употреба е мониторинг на потенцијално сомнителна активност (AML). За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.
    9393
    94  * '''Иницијално време:''' Иницијалното време за извршување на погледот е 8s 15ms. Времето за извршување е побавно поради full scan на табелата Transaction за да се пронајдат записите со висок износ. Ова не е прифатливо за апликацијата, па затоа пристапуваме кон индексирање.
     94 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 8s 15ms. Времето за извршување е побавно поради full scan на табелата Transaction за да се пронајдат записите со висок износ. Ова не е прифатливо за апликацијата, па затоа пристапуваме кон индексирање.
    9595
    96  * Најбавните операции се full scan на Transaction за филтрирање по `amount` и `status`, и JOIN со Account без индекс на `client_id`.
     96 4. Најбавните операции се full scan на Transaction за филтрирање по `amount` и `status`, и JOIN со Account без индекс на `client_id`.
    9797
    9898 * Времето изминато во извршување на insert и update изнесува
    9999
    100  * Времето изминато во извршување на query-то со индекси изнесува 669ms, и тоа е прифатливо време.
     100 5. Времето изминато во извршување на query-то со индекси изнесува 669ms, и тоа е прифатливо време.
    101101
    102  * Времето изминато во извршување на операцијата update по индексирање изнесува
     102 6. Времето изминато во извршување на операцијата update по индексирање изнесува
    103103
    104104
    105105=== View 7: Вкупна состојба на клиент ===
    106106
    107  * '''Филтри:''' Примарен филтер за погледот `v_account_balance` ќе биде според `client_id`.
     107 1. '''Филтри:''' Примарен филтер за погледот `v_account_balance` ќе биде според `client_id`.
    108108
    109  * '''Употреба:''' Примарен случај на употреба е кога клиентот сака да го провери балансот на своите сметки. Овде се битни перформансите, затоа што сакаме апликацијата да функционира без застој.
     109 2. '''Употреба:''' Примарен случај на употреба е кога клиентот сака да го провери балансот на своите сметки. Овде се битни перформансите, затоа што сакаме апликацијата да функционира без застој.
    110110
    111  * '''Иницијално време:''' Иницијалното време за извршување на овој поглед изнесува 88ms. Времето е мало и прифатливо, бидејќи JOIN-овите се на примарни клучеви.
     111 3. '''Иницијално време:''' Иницијалното време за извршување на овој поглед изнесува 88ms. Времето е мало и прифатливо, бидејќи JOIN-овите се на примарни клучеви.
    112112
    113  * Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операции insert и update изнесува
     113 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операции insert и update изнесува
    114114
    115  * Нема потреба да се преуреди прашалникот.
     115 5. Нема потреба да се преуреди прашалникот.
    116116
    117  * Време на извршување на операциите insert и update останува исто.
     117 6. Време на извршување на операциите insert и update останува исто.
    118118
    119119
     
    121121=== View 8: Следење на доцнења (Loan Default Monitoring) ===
    122122
    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`.
    124124
    125  * '''Употреба:''' Примарен случај на употреба е кога банкарскиот персонал сака да ги идентификува клиентите кои задоцниле со плаќање. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.
     125 2. '''Употреба:''' Примарен случај на употреба е кога банкарскиот персонал сака да ги идентификува клиентите кои задоцниле со плаќање. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.
    126126
    127  * '''Иницијално време:''' Иницијалното време за извршување на погледот е 9s 289ms. Иницијалното време за извршување на погледот беше побавно поради full scan на табелата Loan_installment. Ова не е прифатливо време за апликацијата па затоа пристапуваме кон индексирање.
     127 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 9s 289ms. Иницијалното време за извршување на погледот беше побавно поради full scan на табелата Loan_installment. Ова не е прифатливо време за апликацијата па затоа пристапуваме кон индексирање.
    128128
    129  * Најбавните операции се full scan на `Loan_installment` без филтрирање на платените рати, и JOIN со Account без covering индекс.
     129 4. Најбавните операции се full scan на `Loan_installment` без филтрирање на платените рати, и JOIN со Account без covering индекс.
    130130
    131131 * Времето изминато во извршување на INSERT и UPDATE пред изнесува
    132132
    133  * Времето изминато во извршување на query-то со индекси изнесува 597.9ms, и тоа е прифатливо време.
     133 5. Времето изминато во извршување на query-то со индекси изнесува 597.9ms, и тоа е прифатливо време.
    134134
    135  * Времето изминато во извршување на операциите insert и update по индексирање изнесува
     135 6. Времето изминато во извршување на операциите insert и update по индексирање изнесува
    136136
    137137
    138138=== View 9: Accounts (сметки) ===
    139139
    140  * '''Филтри:''' Примарен филтер за погледот `v_accounts` ќе биде според `client_id`.
     140 1. '''Филтри:''' Примарен филтер за погледот `v_accounts` ќе биде според `client_id`.
    141141
    142  * '''Употреба:''' Примарен случај на употреба е преглед на сите сметки на клиент при услуги на шалтер. Овде се битни перформансите.
     142 2. '''Употреба:''' Примарен случај на употреба е преглед на сите сметки на клиент при услуги на шалтер. Овде се битни перформансите.
    143143
    144  * '''Иницијално време:''' Иницијалното време за извршување на овој поглед е 100ms, што е прифатливо, па затоа нема да имаме потреба од индексирање.
     144 3. '''Иницијално време:''' Иницијалното време за извршување на овој поглед е 100ms, што е прифатливо, па затоа нема да имаме потреба од индексирање.
    145145
    146  * Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е
     146 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е
    147147
    148  * Нема потреба да се преуредува прашалникот.
     148 5. Нема потреба да се преуредува прашалникот.
    149149
    150  * Времето на извршување на операциите insert и update останува исто.
     150 6. Времето на извршување на операциите insert и update останува исто.
    151151
    152152
    153153=== View 10: Камати по штедни сметки ===
    154154
    155  * '''Филтри:''' Примарен филтер за погледот `v_savings_interest_payments` ќе биде според `client_id`.
     155 1. '''Филтри:''' Примарен филтер за погледот `v_savings_interest_payments` ќе биде според `client_id`.
    156156
    157  * '''Употреба:''' Примарен случај на употреба е кога клиентот сака да ги прегледа добиените камати по период. Овде се важни перформансите.
     157 2. '''Употреба:''' Примарен случај на употреба е кога клиентот сака да ги прегледа добиените камати по период. Овде се важни перформансите.
    158158
    159  * '''Иницијално време:''' Иницијалното време за извршување на овој поглед е 214ms, што е прифатливо, па затоа нема да имаме потреба од индексирање.
     159 3. '''Иницијално време:''' Иницијалното време за извршување на овој поглед е 214ms, што е прифатливо, па затоа нема да имаме потреба од индексирање.
    160160
    161  * Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е
     161 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е
    162162
    163  * Нема потреба да се преуредува прашалникот.
     163 5. Нема потреба да се преуредува прашалникот.
    164164
    165  * Времето на извршување на операциите insert и update останува исто.
     165 6. Времето на извршување на операциите insert и update останува исто.
    166166
    167167
    168168=== View 11: Дневен извештај на филијала ===
    169169
    170  * '''Филтри:''' Примарен филтер за погледот `v_daily_branch_report` ќе биде според `branch_id`, а дополнително и според `report_date`.
     170 1. '''Филтри:''' Примарен филтер за погледот `v_daily_branch_report` ќе биде според `branch_id`, а дополнително и според `report_date`.
    171171
    172  * '''Употреба:''' Примарен случај на употреба е кога раководството на филијалата или централниот менаџмент сака да ги следи дневните активности. Овде се битни перформансите.
     172 2. '''Употреба:''' Примарен случај на употреба е кога раководството на филијалата или централниот менаџмент сака да ги следи дневните активности. Овде се битни перформансите.
    173173
    174  * '''Иницијално време:''' Иницијалното време за извршување на погледот е 385ms. Ова е прифатливо време за апликацијата.
     174 3. '''Иницијално време:''' Иницијалното време за извршување на погледот е 385ms. Ова е прифатливо време за апликацијата.
    175175
    176  * Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е
     176 4. Нема потреба од правење план на извршување, бидејќи времето е задоволително. Времето на операциите insert и update е
    177177
    178  * Нема потреба да се преуредува прашалникот.
     178 5. Нема потреба да се преуредува прашалникот.
    179179
    180  * Времето на извршување на операциите insert и update останува исто.
     180 6. Времето на извршување на операциите insert и update останува исто.
    181181
    182182