Changes between Version 4 and Version 5 of OtherTopics
- Timestamp:
- 02/12/26 19:56:24 (2 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
OtherTopics
v4 v5 3 3 == Анализа на перформанси, додавање индекси 4 4 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|Напреден развој на базата]]. 6 15 7 16 Бидејќи не можеме директно да извршуваме `explain analyze` на процедурата, тоа ќе го правиме на прашалниците кои се повикуваат во неа. 8 Со цел да видиме поголема разлика во резултатите, прво генерираме дополнителни податоци. 9 10 Додаваме 1 000000 нови редови во `listens` табелата.17 18 19 Додаваме 1М нови редови во `listens` табелата со случајна вредност за `timestamp` во интервал од изминатите 8 месеци. 11 20 {{{ 12 21 insert into listens (listener_id, song_id, timestamp) … … 19 28 }}} 20 29 21 Додаваме индекс на timestamp30 Додаваме индекс на `timestamp` 22 31 {{{ 23 32 CREATE INDEX ON listens(timestamp); 24 33 }}} 25 34 26 Ќе ги споредуваме времињата на извршување пред и по додавање на индексот. Сите прашалници ги извршуваме со `explain analyze`.35 Ќе тестираме 2 прашалници. 27 36 28 37 Прашалник 1: … … 51 60 }}} 52 61 53 Просечното `Execution Time` од 10 извршувања е 67.14 ms.62 Просечното `Execution Time` од 10 извршувања е **67,14 ms**. 54 63 55 64 Со индекс добиваме: … … 67 76 }}} 68 77 69 Можеме да забележиме користење на индекс преку `Index Only Scan`, сега просечното време за 10 извршувања е 0.83 ms. Добиваме подобрување на перформансите од ~80x.78 Можеме да забележиме користење на индекс преку `Index Only Scan`, сега просечното време за 10 извршувања е **0,83 ms**. Добиваме подобрување на перформансите од **~80x**. 70 79 71 80 … … 119 128 }}} 120 129 121 Просечното `Execution Time` од 10 извршувања е 88.65 ms.130 Просечното `Execution Time` од 10 извршувања е **88,65 ms**. 122 131 123 132 … … 161 170 }}} 162 171 163 Просечно време на извршување е 15.04ms -> ~6x подобри перформанси.164 165 Очекувано е перформансите на процедурата да бидат многу подобри со додавањето на овој индекс.172 Просечно време на извршување е **15,04ms** -> **~6x** подобри перформанси. Во планот забележуваме замена на секвенцијално скенирање со скенирање на индекс. 173 174 Заклучуваме дека перформансите на процедурата ќе бидат многу подобри со овој индекс и го додаваме истиот. 166 175 167 176 == Безбедност и заштита
