Changes between Version 52 and Version 53 of normalization


Ignore:
Timestamp:
09/28/25 20:27:41 (9 days ago)
Author:
221046
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • normalization

    v52 v53  
    269269 ** [attachment:explain_plan.txt Резултати од двете извршувањаа на Explain Plan (со и без индекси)] **
    270270
    271 **Структура на планот**
    272 
    273 - Користи CTE playcounts → !HashAggregate → Hash Join (track → genre) → Nested Loops за invoice → invoice_line → track → album → artist.
    274 
    275 - Потоа се пресметува Max Play Counts и се join-ира со playcounts.
    276 
    277 - Финално се враќаат редовите.
    278 
    279 - Физичките операции се исти во двата плана.
    280 
    281 || **Клучни метрики** || **Прв план** || **Втор план** ||
    282 || Hash Join (финален) || 0.254–0.258 ms || 0.249–0.254 ms ||
    283 || Време на извршување || 0.372 ms || 0.345 ms ||
    284 || Време на планирање || 3.223 ms || 0.858 ms ||
    285 || Buffers (shared hit) || 223 || 223 ||
    286 || Врати редови || 8 || 8 ||
    287 
    288 
    289 **Заклучок**: Извршувањето е малку побрзо кај вториот план, а најголема разлика е во времето за планирање. Бидејќи станува збор за помала база на податоци разликата на извршувањето не е значајна, меѓуто времето на планирање е намалено на 1/4 од она без индекси.
     271=== Прв план ===
     272* Hash Join (финален): 1.019..1.028 ms
     273* Execution Time: 1.194 ms
     274* Planning Time: 4.045 ms
     275* Buffers: shared hit=231
     276* Клучни чекори:
     277  - Seq Scan на invoice (филтер customer_id=5) → чита 399 редови, само 7 погодени.
     278  - Seq Scan на invoice_line (2221 редови).
     279  - Nested Loop + Hash Join со artist, album, track.
     280  - Повеќе seq scans → поголема потрошувачка на buffers и време.
     281
     282=== Втор план ===
     283* Hash Join (финален): 0.316..0.321 ms
     284* Execution Time: 0.431 ms
     285* Planning Time: 0.894 ms
     286* Buffers: shared hit=223
     287* Клучни чекори:
     288  - Bitmap Index Scan на invoice (idx_invoice_customer_id) → директно таргетира 7 редови.
     289  - Bitmap Heap Scan + Index Scan на invoice_line.
     290  - Index Scan на track и album.
     291  - Помалку време и buffers со индексирани пристапи.
     292
     293=== Споредбена табела ===
     294|| Метрика              || Прв план     || Втор план     ||
     295| Hash Join (финален)   | ~1.02 ms      | ~0.32 ms      |
     296| Execution Time        | 1.194 ms      | 0.431 ms      |
     297| Planning Time         | 4.045 ms      | 0.894 ms      |
     298| Buffers (shared hit)  | 231           | 223           |
     299| Редови вратени        | 8             | 8             |
     300
     301=== Заклучок ===
     302* Вториот план е поефикасен.
     303* Користи индекси (Bitmap Index Scan, Index Scan) наместо full Seq Scan.
     304* Резултат: ~3x побрзо извршување, ~4x побрзо планирање, помало buffer користење.
    290305
    291306