Changes between Version 4 and Version 5 of OtherTopics


Ignore:
Timestamp:
02/12/26 19:56:24 (2 weeks ago)
Author:
231136
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OtherTopics

    v4 v5  
    33== Анализа на перформанси, додавање индекси
    44
    5 Ќе ја разгледуваме процедурата yesterdays_most_popular(), првата од [[AdvancedDatabaseDevelopment|тука]].
     5За да направиме анализа на перформансите на нашите прашалници ќе разгледаме неколку различни употреби.
     6
     7Начинот на тестирање е следниот:
     8- Додаваме голем број на нови записи во табелите (пр. 1М записи) со цел користењето на индекс да биде исплатливо, доколку истиот е искористен соодветно. Јасно е дека за табела со 20 записи нема да има голема предност доколку се користи индекс.
     9- Пред додавање на индексот ги извршуваме прашалниците 10 пати користејќи `explain analyze`. Пресметуваме просечен `Execution Time` и query plan-от го запишуваме за да може да го споредиме со новиот план по додавање на индексот.
     10- По додавање на индексот го извршуваме истиот прашалник 10 пати и ги споредуваме резултатите.
     11
     12=== Сценарио 1
     13
     14Ќе ја разгледуваме процедурата yesterdays_most_popular() - прва од [[AdvancedDatabaseDevelopment|Напреден развој на базата]].
    615
    716Бидејќи не можеме директно да извршуваме `explain analyze` на процедурата, тоа ќе го правиме на прашалниците кои се повикуваат во неа.
    8 Со цел да видиме поголема разлика во резултатите, прво генерираме дополнителни податоци.
    9 
    10 Додаваме 1000000 нови редови во `listens` табелата.
     17
     18
     19Додаваме 1М нови редови во `listens` табелата со случајна вредност за `timestamp` во интервал од изминатите 8 месеци.
    1120{{{
    1221insert into listens (listener_id, song_id, timestamp)
     
    1928}}}
    2029
    21 Додаваме индекс на timestamp
     30Додаваме индекс на `timestamp`
    2231{{{
    2332CREATE INDEX ON listens(timestamp);
    2433}}}
    2534
    26 Ќе ги споредуваме времињата на извршување пред и по додавање на индексот. Сите прашалници ги извршуваме со `explain analyze`.
     35Ќе тестираме 2 прашалници.
    2736
    2837Прашалник 1:
     
    5160}}}
    5261
    53 Просечното `Execution Time` од 10 извршувања е 67.14 ms.
     62Просечното `Execution Time` од 10 извршувања е **67,14 ms**.
    5463
    5564Со индекс добиваме:
     
    6776}}}
    6877
    69 Можеме да забележиме користење на индекс преку `Index Only Scan`, сега просечното време за 10 извршувања е 0.83 ms. Добиваме подобрување на перформансите од ~80x.
     78Можеме да забележиме користење на индекс преку `Index Only Scan`, сега просечното време за 10 извршувања е **0,83 ms**. Добиваме подобрување на перформансите од **~80x**.
    7079
    7180
     
    119128}}}
    120129
    121 Просечното `Execution Time` од 10 извршувања е 88.65 ms.
     130Просечното `Execution Time` од 10 извршувања е **88,65 ms**.
    122131
    123132
     
    161170}}}
    162171
    163 Просечно време на извршување е 15.04ms -> ~6x подобри перформанси.
    164 
    165 Очекувано е перформансите на процедурата да бидат многу подобри со додавањето на овој индекс.
     172Просечно време на извршување е **15,04ms** -> **~6x** подобри перформанси. Во планот забележуваме замена на секвенцијално скенирање со скенирање на индекс.
     173
     174Заклучуваме дека перформансите на процедурата ќе бидат многу подобри со овој индекс и го додаваме истиот.
    166175
    167176== Безбедност и заштита