Changes between Version 65 and Version 66 of QueryOptimization


Ignore:
Timestamp:
05/17/26 13:41:59 (9 days ago)
Author:
231027
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • QueryOptimization

    v65 v66  
    3131==== 3. Иницијално време:
    3232
    33 Иницијалното време за извршување на погледот изнесува 3.249s (3249ms). Ова е исклучително бавно и неприфатливо за една веб-апликација, каде што секој одзив над 500ms се смета за критичен.
     33Иницијалното време за извршување на погледот изнесува 3.249 s (3249 ms). Ова е исклучително бавно и неприфатливо за една веб-апликација, каде што секој одзив над 500ms се смета за критичен.
    3434
    3535==== 4. Анализа на планот на извршување (без индекси):
     
    3737Иако базата се обидува да користи постоечки '''Primary Key''' индекси, главниот проблем се јавува во спојувањето на четирите табели `Performer`, `Event_Happening_Performer`, `Event_Happening`, `Event`.
    3838
    39 Најбавниот дел е кај '''Nested Loop''' операциите и проверката на '''Foreign Keys''' при '''INSERT''' (1.424s).
    40 
    41 Времето на планирање е исто така високо (1.8s), што укажува на комплексност во резолвирањето на релациите без соодветни патеки.
     39Најбавниот дел е кај '''Nested Loop''' операциите и проверката на '''Foreign Keys''' при '''INSERT''' (1.424 s).
     40
     41Времето на планирање е исто така високо (1.8 s), што укажува на комплексност во резолвирањето на релациите без соодветни патеки.
    4242
    4343 * '''SELECT'''
     
    126126==== 6. Резултат по оптимизација:
    127127
    128 По додавањето на индексите, времето на извршување на '''SELECT''' се намали на 0.533ms.
     128По додавањето на индексите, времето на извршување на '''SELECT''' се намали на 0.533 ms.
    129129
    130130Подобрување: Ова е забрзување од над 6000 пати.
     
    225225==== 3. Иницијално време:
    226226
    227 '''SELECT''': 2.164s (2164ms)
    228 
    229 '''UPDATE''': 312.239s (околу 5.2 минути)
     227'''SELECT''': 2.164 s (2164 ms)
     228
     229'''UPDATE''': 312.239 s (околу 5.2 минути)
    230230Времето за '''UPDATE''' е критично. Ова значи дека ако системот треба да ажурира статус на седиште, целата база би била под огромен притисок.
    231231
     
    234234Кај '''SELECT''' операцијата, базата користи '''Parallel Index Scan''' врз табелата `Section` и троши многу време на филтрирање на редови кои не одговараат (Rows Removed by Filter: 27502).
    235235
    236 Кај '''UPDATE''' операцијата се случува најлошото сценарио: '''Seq Scan'''. Базата мора да ги прочита сите 20,753,209 редови во табелата `Seat` за да го најде седиштето со број 999999. Тоа е причината за времето од 312s.
     236Кај '''UPDATE''' операцијата се случува најлошото сценарио: '''Seq Scan'''. Базата мора да ги прочита сите 20,753,209 редови во табелата `Seat` за да го најде седиштето со број 999999. Тоа е причината за времето од 312 s.
    237237
    238238 * '''SELECT'''
     
    333333==== 6. Резултат по оптимизација:
    334334
    335 '''SELECT''': Намалено на 0.572ms (забрзување од ~3800 пати).
    336 
    337 '''UPDATE''': Намалено на 0.461ms.
     335'''SELECT''': Намалено на 0.572 ms.
     336
     337'''UPDATE''': Намалено на 0.461 ms.
    338338
    339339 * '''SELECT'''
     
    429429==== 2. Случај на употреба:
    430430
    431 Погледот се користи во делот My Tickets на профилот на секој регистриран корисник. Ова е критична точка на интеракција; корисникот очекува веднаш да ги добие своите билети за да може да го прикаже QR-кодот при влез на настан. Секое доцнење тука предизвикува директен застој на влезните капии.
     431Погледот се користи во делот '''My Tickets''' на профилот на секој регистриран корисник. Ова е критична точка на интеракција; корисникот очекува веднаш да ги добие своите билети за да може да го прикаже QR-кодот при влез на настан. Секое доцнење тука предизвикува директен застој на влезните капии.
    432432
    433433==== 3. Иницијално време:
    434434
    435 Иницијалното време за извршување изнесува 443.784ms. Иако ова изгледа брзо во споредба со претходните погледи, треба да се земе предвид дека во реална околина со илјадници истовремени корисници, ова време ќе ескалира и ќе ја преоптовари базата.
     435Иницијалното време за извршување изнесува 443.784 ms. Иако ова изгледа брзо во споредба со претходните погледи, треба да се земе предвид дека во реална околина со илјадници истовремени корисници, ова време ќе ескалира и ќе ја преоптовари базата.
    436436
    437437==== Анализа на планот на извршување (без индекси):
     
    441441 * Се извршува '''Parallel Seq Scan''' врз 3.2 милиони записи.
    442442
    443  * Базата троши 389ms само за да ги прелиста сите трансакции и да ги најде оние што му припаѓаат на `user_id = 1`.
     443 * Базата троши 389 ms само за да ги прелиста сите трансакции и да ги најде оние што му припаѓаат на `user_id = 1`.
    444444
    445445 * '''SELECT'''
     
    554554==== 6. Резултат по оптимизација:
    555555
    556 Времето по оптимизација остана речиси идентично (450.880ms).
     556Времето по оптимизација остана речиси идентично (450.880 ms).
    557557
    558558Планот покажува дека базата се уште избира '''Parallel Seq Scan''' наместо новокреираниот индекс.
    559559
    560 Сепак, кај '''INSERT''' и '''UPDATE''' операциите се гледа стабилност и екстремна брзина (под 1ms), што потврдува дека индексите се правилно поставени за интегритетот на податоците.
     560Сепак, кај '''INSERT''' и '''UPDATE''' операциите се гледа стабилност и екстремна брзина (под 1 ms), што потврдува дека индексите се правилно поставени за интегритетот на податоците.
    561561
    562562 * '''SELECT'''
     
    673673==== 3. Иницијално време:
    674674
    675 Иницијалното време за извршување е многу ниско (0.187ms). Ова се должи на фактот што табелата `Event_Happening_Rating` е релативно мала (околу 17,800 редови), па базата може многу брзо да ја процесира дури и без екстремна оптимизација.
     675Иницијалното време за извршување е многу ниско (0.187 ms). Ова се должи на фактот што табелата `Event_Happening_Rating` е релативно мала (околу 17,800 редови), па базата може многу брзо да ја процесира дури и без екстремна оптимизација.
    676676
    677677==== 4. Анализа на планот на извршување (без индекси):
     
    771771==== 6. Резултат по оптимизација:
    772772
    773 По „оптимизацијата“, времето на '''SELECT''' се зголемило на 359.600ms.
     773По „оптимизацијата“, времето на '''SELECT''' се зголемило на 359.600 ms.
    774774
    775775Анализа на аномалијата: Планот покажува дека базата во овој случај одбрала '''Seq Scan''' наместо '''Index Scan'''.