Changes between Version 68 and Version 69 of QueryOptimization


Ignore:
Timestamp:
05/13/26 16:23:16 (13 days ago)
Author:
231105
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • QueryOptimization

    v68 v69  
    5555Времето потребно за извршување на овој прашалник е **~20ms**.
    5656
     57**-Query plan:**
     58
     59[[Image("Screenshot 2026-05-13 161721.png", 800px)]]
     60
     61=== 5. View5 route_trip_stats ===
     62
     63-**Опис**: Погледот route_trip_stats обезбедува статистички преглед на фреквенцијата и точноста на железничките рути. Преку него се следи вкупниот број на реализирани патувања по рута и просечното време на доцнење, што помага во идентификување на линиите кои се најкритични во однос на возниот ред.
     64
     65[[Image(route_trip_stats.png, 800px)]]
     66
     67Времето потребно за извршување на овој прашалник е **~300ms.** Времето на извршување е прифатливо и тоа може да го видиме со query планот.
     68
     69**-Query plan:**
     70
     71[[Image("query plan za route_trip_stats.png", 800px)]]
     72
     73=== 6. View6 view_train_utilization ===
     74
     75-**Опис**: Погледот view_train_utilization е наменет за анализа на искористеноста и доверливоста на секој поединечен воз. Тој прикажува колку пати секој воз бил во сообраќај и какво е неговото просечно доцнење, што помага при планирање на сервисирање и замена на возилата.
     76
     77[[Image(Screenshot 2026-05-08 161126.png, 800px)]]
     78
     79Времето потребно за извршување на овој прашалник е **~140ms.** Времето на извршување е прифатливо и тоа може да го видиме со query планот.
     80
     81**-Query plan:**
     82
     83[[Image(Screenshot 2026-05-08 164049.png, 800px)]]
     84
     85=== 7. View7 active_delays ===
     86
     87-**Опис**: Погледот active_delays е оперативен поглед кој овозможува следење на сите возови кои моментално се во сообраќај и се соочуваат со доцнење. Овој поглед ги филтрира само активните патувања (кои не се завршени), давајќи прецизни информации за локацијата на возот и времетраењето на неговото доцнење.
     88
     89[[Image(active_delays.png, 800px)]]
     90
     91Времето потребно за извршување на овој прашалник е **~40ms.** Времето на извршување е прифатливо и тоа може да го видиме со query планот.
     92
     93**-Query plan:**
     94
     95[[Image("query plan za active_delays.png", 800px)]]
     96
     97=== 8. View8 train_maintenance_stats ===
     98
     99-**Опис**: Погледот train_maintenance_stats служи за следење на историјата на сервисирање на возовите. Тој дава детален преглед на вкупниот број извршени поправки по воз и бројот на различни техничари кои биле вклучени во процесот на одржување.
     100
     101[[Image(train_maintenance_stats.png, 800px)]]
     102
     103Времето потребно за извршување на овој прашалник е **~1.8s** и е прифатиливо, но може да се подобри.
     104
    57105**-Explain plan:**
    58106
    59 [[Image(Screenshot 2026-05-08 192247.png, 800px)]]
    60 
    61 Поради тоа што се прави full scan на повеќе табели, затоа правиме индекси на view-то:
    62 
    63 [[Image(Screenshot 2026-05-08 193215.png, 800px)]]
    64 
    65 **-Query plan:**
    66 
    67 [[Image(Screenshot 2026-05-08 193435.png, 800px)]]
    68 
    69 === 5. View5 route_trip_stats ===
    70 
    71 -**Опис**: Погледот route_trip_stats обезбедува статистички преглед на фреквенцијата и точноста на железничките рути. Преку него се следи вкупниот број на реализирани патувања по рута и просечното време на доцнење, што помага во идентификување на линиите кои се најкритични во однос на возниот ред.
    72 
    73 [[Image(route_trip_stats.png, 800px)]]
    74 
    75 Времето потребно за извршување на овој прашалник е **~300ms.** Времето на извршување е прифатливо и тоа може да го видиме со query планот.
    76 
    77 **-Query plan:**
    78 
    79 [[Image("query plan za route_trip_stats.png", 800px)]]
    80 
    81 === 6. View6 view_train_utilization ===
    82 
    83 -**Опис**: Погледот view_train_utilization е наменет за анализа на искористеноста и доверливоста на секој поединечен воз. Тој прикажува колку пати секој воз бил во сообраќај и какво е неговото просечно доцнење, што помага при планирање на сервисирање и замена на возилата.
    84 
    85 [[Image(Screenshot 2026-05-08 161126.png, 800px)]]
    86 
    87 Времето потребно за извршување на овој прашалник е **~140ms.** Времето на извршување е прифатливо и тоа може да го видиме со query планот.
    88 
    89 **-Query plan:**
    90 
    91 [[Image(Screenshot 2026-05-08 164049.png, 800px)]]
    92 
    93 === 7. View7 active_delays ===
    94 
    95 -**Опис**: Погледот active_delays е оперативен поглед кој овозможува следење на сите возови кои моментално се во сообраќај и се соочуваат со доцнење. Овој поглед ги филтрира само активните патувања (кои не се завршени), давајќи прецизни информации за локацијата на возот и времетраењето на неговото доцнење.
    96 
    97 [[Image(active_delays.png, 800px)]]
    98 
    99 Времето потребно за извршување на овој прашалник е **~40ms.** Времето на извршување е прифатливо и тоа може да го видиме со query планот.
    100 
    101 **-Query plan:**
    102 
    103 [[Image("query plan za active_delays.png", 800px)]]
    104 
    105 === 8. View8 train_maintenance_stats ===
    106 
    107 -**Опис**: Погледот train_maintenance_stats служи за следење на историјата на сервисирање на возовите. Тој дава детален преглед на вкупниот број извршени поправки по воз и бројот на различни техничари кои биле вклучени во процесот на одржување.
    108 
    109 [[Image(train_maintenance_stats.png, 800px)]]
    110 
    111 Времето потребно за извршување на овој прашалник е **~1.8s** и е прифатиливо, но може да се подобри.
     107[[Image(train_maint_stats_Plan.png, 800px)]]
     108
     109Со користење на алатката за приказ на планот за извршување, забележуваме дека главната причина за доцнењето е Full Table Scan врз табелата Employee_performs_maintenance, па затоа правиме индекс:
     110
     111[[Image(indeks.png, 800px)]]
     112
     113[[Image(po_idens_za_maintence.png, 800px)]]
     114
     115По креирањето на индексот времето на извршување на прашалникот се намалува од **~1.8s** на **~50ms**.
     116
     117**-Query plan:**
     118
     119[[Image("query plan za train_maintenance_stats.png", 800px)]]
     120
     121=== 9. View9 station_traffic_and_revenue ===
     122
     123-**Опис**: Погледот station_traffic_and_revenue врши сеопфатна анализа на активноста на железничките станици. Тој ги прикажува клучните индикатори за успех за секоја станица: вкупниот број на заминати патници, генерираниот приход од продадени билети и бројот на различни возови кои поминале низ станицата.
     124
     125[[Image(Screenshot 2026-05-08 154650.png, 800px)]]
     126
     127Времето потребно за извршување на овој прашалник е **~2s.** Времето на извршување не е прифатливо.
     128
     129-**Оптимизација**: Овој поглед е дефиниран како **Materialized View** бидејќи агрегира податоци преку сложени поврзувања на табелите за станици, билети и патувања. Со оглед на тоа што користи SUM и COUNT(DISTINCT), пресметките бараат значителна моќност. Со материјализацијата, менаџментот може веднаш да ги идентификува најпрометните и најпрофитабилните станици без да го забавува тековниот систем за продажба на билети. Иако времето на извршување е прифатливо, бидејќи самиот view е аналитички ние ја направувме оваа оптимизација.
     130
     131[[Image(Screenshot 2026-05-08 155445.png, 800px)]]
     132
     133Времето потребно за извршување на овој прашалник по оптимизацијата е **~20ms.**
     134
     135**-Query plan:**
     136
     137[[Image(Screenshot 2026-05-13 161129.png, 800px)]]
     138
     139=== 10. View10 view_conductor_list ===
     140
     141-**Опис**: Погледот view_conductor_list е детален преглед наменет за кондуктерите и железничкиот персонал. Погледот ги здружува податоците за билетите, патниците, возовите и станиците, овозможувајќи брз увид во тоа кој патник на кое седиште се наоѓа, во кој вагон е и на кои релации патува.
     142
     143[[Image(predIndeks.png, 800px)]]
     144
     145Времето потребно за извршување на овој прашалник е **~2s 400ms.** Не е прифатливо.
    112146
    113147**-Explain plan:**
    114148
    115 [[Image(train_maint_stats_Plan.png, 800px)]]
    116 
    117 Со користење на алатката за приказ на планот за извршување, забележуваме дека главната причина за доцнењето е Full Table Scan врз табелата Employee_performs_maintenance, па затоа правиме индекс:
    118 
    119 [[Image(indeks.png, 800px)]]
    120 
    121 [[Image(po_idens_za_maintence.png, 800px)]]
    122 
    123 По креирањето на индексот времето на извршување на прашалникот се намалува од **~1.8s** на **~50ms**.
    124 
    125 **-Query plan:**
    126 
    127 [[Image("query plan za train_maintenance_stats.png", 800px)]]
    128 
    129 === 9. View9 station_traffic_and_revenue ===
    130 
    131 -**Опис**: Погледот station_traffic_and_revenue врши сеопфатна анализа на активноста на железничките станици. Тој ги прикажува клучните индикатори за успех за секоја станица: вкупниот број на заминати патници, генерираниот приход од продадени билети и бројот на различни возови кои поминале низ станицата.
    132 
    133 [[Image(Screenshot 2026-05-08 154650.png, 800px)]]
    134 
    135 Времето потребно за извршување на овој прашалник е **~2s.** Времето на извршување не е прифатливо.
    136 
    137 -**Оптимизација**: Овој поглед е дефиниран како **Materialized View** бидејќи агрегира податоци преку сложени поврзувања на табелите за станици, билети и патувања. Со оглед на тоа што користи SUM и COUNT(DISTINCT), пресметките бараат значителна моќност. Со материјализацијата, менаџментот може веднаш да ги идентификува најпрометните и најпрофитабилните станици без да го забавува тековниот систем за продажба на билети. Иако времето на извршување е прифатливо, бидејќи самиот view е аналитички ние ја направувме оваа оптимизација.
    138 
    139 [[Image(Screenshot 2026-05-08 155445.png, 800px)]]
    140 
    141 Времето потребно за извршување на овој прашалник по оптимизацијата е **~20ms.**
    142 
    143 **-Query plan:**
    144 
    145 [[Image(Screenshot 2026-05-13 161129.png, 800px)]]
    146 
    147 === 10. View10 view_conductor_list ===
    148 
    149 -**Опис**: Погледот view_conductor_list е детален преглед наменет за кондуктерите и железничкиот персонал. Погледот ги здружува податоците за билетите, патниците, возовите и станиците, овозможувајќи брз увид во тоа кој патник на кое седиште се наоѓа, во кој вагон е и на кои релации патува.
    150 
    151 [[Image(predIndeks.png, 800px)]]
    152 
    153 Времето потребно за извршување на овој прашалник е **~2s 400ms.** Не е прифатливо.
     149[[Image(explain_plan.png, 800px)]]
     150
     151Со користење на алатката за приказ на планот за извршување, забележуваме дека главната причина за доцнењето е Full Table Scan врз табелата Ticket, па затоа правиме индекс:
     152
     153[[Image("Screenshot 2026-05-08 165050.png", 800px)]]
     154
     155[[Image(poIndeks.png, 800px)]]
     156
     157Сега времето на извршување е **~26ms** и е прифатливо.
     158
     159**-Query plan:**
     160
     161[[Image(QueryPlan.png, 800px)]]
     162
     163=== 11. View11 view_user_ticket_history ===
     164
     165-**Опис**: Погледот view_user_ticket_history е наменет за кориснички профили и историја на патувања. Тој ги сумира сите билети на еден патник, класифицирајќи ги како „претстојни“ или „минати“ патувања, притоа прикажувајќи детали за рутата, времето на поаѓање и статусот на билетот.
     166
     167[[Image(USERPREDIND.png, 800px)]]
     168
     169Времето потребно за извршување на овој прашалник е **~3s 998ms.** Не е прифатливо.
    154170
    155171**-Explain plan:**
    156172
    157 [[Image(explain_plan.png, 800px)]]
    158 
    159 Со користење на алатката за приказ на планот за извршување, забележуваме дека главната причина за доцнењето е Full Table Scan врз табелата Ticket, па затоа правиме индекс:
    160 
    161 [[Image("Screenshot 2026-05-08 165050.png", 800px)]]
    162 
    163 [[Image(poIndeks.png, 800px)]]
    164 
    165 Сега времето на извршување е **~26ms** и е прифатливо.
    166 
    167 **-Query plan:**
    168 
    169 [[Image(QueryPlan.png, 800px)]]
    170 
    171 === 11. View11 view_user_ticket_history ===
    172 
    173 -**Опис**: Погледот view_user_ticket_history е наменет за кориснички профили и историја на патувања. Тој ги сумира сите билети на еден патник, класифицирајќи ги како „претстојни“ или „минати“ патувања, притоа прикажувајќи детали за рутата, времето на поаѓање и статусот на билетот.
    174 
    175 [[Image(USERPREDIND.png, 800px)]]
    176 
    177 Времето потребно за извршување на овој прашалник е **~3s 998ms.** Не е прифатливо.
    178 
    179 **-Explain plan:**
    180 
    181173[[Image(EXPLAINUSER.png, 800px)]]
    182174