| 96 | | Примерите користат илустративни идентификатори и датуми. За споредливи мерења се избираат вредности што постојат во базата и се задржуваат истите податоци, филтри, услови за кеширање и број на повторувања. Статистиките за табелите треба да бидат ажурирани во двете состојби. |
| 97 | | |
| 98 | | === Тест прашалници === |
| 99 | | |
| 100 | | {{{ |
| 101 | | #!sql |
| 102 | | BEGIN READ ONLY; |
| 103 | | SET LOCAL statement_timeout = '60s'; |
| 104 | | |
| 105 | | -- Тест 1: по доставувач и датум |
| 106 | | EXPLAIN (ANALYZE, BUFFERS, VERBOSE) |
| | 96 | Мерењата се евидентирани во DBeaver на 14 септември 2026 година. „Пред индексирање“ и „по индексирање“ ги означуваат групите наведени како „без индекси“ и „со индекси“ во евиденцијата. Точниот сет присутни индекси во секоја група не е евидентиран; „без индекси“ не потврдува отсуство на индекси од примарни и уникатни клучеви. |
| | 97 | |
| | 98 | Наведените времиња се клиентски мерења од DBeaver, а не серверските Planning Time и Execution Time од EXPLAIN ANALYZE. Нема приложени планови, типови на скенирање или податоци за баферите. Вредностите се во милисекунди (ms). |
| | 99 | |
| | 100 | === Измерен прашалник === |
| | 101 | |
| | 102 | {{{ |
| | 103 | #!sql |
| 122 | | Основната состојба ги задржува индексите на примарните клучеви и уникатните ограничувања. Останатите присутни индекси се евидентираат одделно. При споредба на заеднички индекси се користи истата почетна состојба за секој преглед. |
| 123 | | |
| 124 | | ||= Метрика ||= Тест 1 (по доставувач и датум) ||= Тест 2 (по компаниска нарачка) || |
| 125 | | || Planning Time || ___ ms || ___ ms || |
| 126 | | || Execution Time || ___ ms || ___ ms || |
| 127 | | || Rows Returned || ___ || ___ || |
| 128 | | || Начин на читање по табела || ___ || ___ || |
| 129 | | || Shared Hit Blocks || ___ || ___ || |
| 130 | | || Shared Read Blocks || ___ || ___ || |
| 131 | | |
| 132 | | {{{ |
| 133 | | -- Планови и резултати пред дополнителното индексирање: |
| 134 | | |
| 135 | | }}} |
| | 110 | ||= Метрика ||= Измерен резултат || |
| | 111 | || Клиентско време (ms) || околу 70000 || |
| | 112 | || Приказ на мерењето || Време прикажано со резултатот во DBeaver || |
| | 113 | || Прикажани / преземени редови || 200 преземени; вкупниот број не е утврден || |
| | 114 | || Planning Time / Execution Time од EXPLAIN || Не се измерени || |
| | 115 | || План, тип на скенирање и бафери || Не се приложени || |
| 190 | | Мерењето ги користи истите тест прашалници и услови како почетното мерење. |
| 191 | | |
| 192 | | ||= Метрика ||= Тест 1 (по доставувач и датум) ||= Тест 2 (по компаниска нарачка) || |
| 193 | | || Planning Time || ___ ms || ___ ms || |
| 194 | | || Execution Time || ___ ms || ___ ms || |
| 195 | | || Rows Returned || ___ || ___ || |
| 196 | | || Начин на читање по табела || ___ || ___ || |
| 197 | | || Shared Hit Blocks || ___ || ___ || |
| 198 | | || Shared Read Blocks || ___ || ___ || |
| 199 | | |
| 200 | | {{{ |
| 201 | | -- Планови и резултати по дополнителното индексирање: |
| 202 | | |
| 203 | | }}} |
| 204 | | |
| 205 | | === Анализа на подобрување === |
| 206 | | |
| 207 | | ||= Метрика ||= Пред ||= По ||= Промена (%) || |
| 208 | | || Execution Time (Тест 1) || ___ ms || ___ ms || ___ % || |
| 209 | | || Execution Time (Тест 2) || ___ ms || ___ ms || ___ % || |
| 210 | | |
| 211 | | Промената се пресметува како 100 × (време пред − време по) / време пред, кога почетното време е поголемо од нула. Негативна вредност означува побавно извршување. |
| 212 | | |
| 213 | | Изборот меѓу секвенцијално читање, индексно читање и други планови зависи од обемот на податоците, селективноста на филтрите и статистиките. Индексите не гарантираат забрзување или отстранување на сортирањата и спојувањата. Плановите и времињата се утврдуваат со мерење. |
| | 170 | ||= Метрика ||= Измерен резултат || |
| | 171 | || Клиентско време (ms) || 48236 || |
| | 172 | || Приказ на мерењето || Статистика за 2 наредби: 48208 ms извршување, 28 ms преземање, 48236 ms вкупно || |
| | 173 | || Прикажани / преземени редови || Не е утврден од приказот на статистиката || |
| | 174 | || Planning Time / Execution Time од EXPLAIN || Не се измерени || |
| | 175 | || План, тип на скенирање и бафери || Не се приложени || |
| | 176 | |
| | 177 | === Анализа на резултатите === |
| | 178 | |
| | 179 | ||= Метрика ||= Пред ||= По ||= Промена на времето || |
| | 180 | || Клиентско време (ms) || околу 70000 || 48236 || Не се пресметува || |
| | 181 | |
| | 182 | Споредбата е ориентациска. Во состојбата „без индекси“ се гледаат околу 1 min 10 s и 200 преземени редови, со ограничување на преземањето на 200. Во состојбата „со индекси“ се прикажува статистика за 2 наредби: 48208 ms извршување, 28 ms преземање и 48236 ms вкупно. Еден прикажан ред во статистиката не е бројот на достави. Не се пресметува процент на забрзување поради различниот опфат на мерењата. |
| | 183 | |
| | 184 | Ова се поединечни набљудувања. Не се евидентирани контролирани повторувања, исти услови за кеширање и оптоварување или точните дефиниции на присутните индекси. Затоа промената на времето не е доказ дека индексите се единствената причина. Не се приложени мерења за INSERT, UPDATE и DELETE. |
| | 185 | |
| | 186 | === Дополнително тестирање - сè уште неизмерено === |
| | 187 | |
| | 188 | Следниот прашалник служи за ново мерење на серверскиот план со истиот филтер. Неговите резултати не се пополнети со клиентските времиња наведени погоре. За споредба се задржуваат исти податоци и поставки, се евидентираат присутните индекси, се ажурираат статистиките и се прават повеќе повторувања во двете состојби. Се споредуваат медијаната на времињата и плановите. |
| | 189 | |
| | 190 | За овој дополнителен тест е предвиден лимит од 180 секунди, бидејќи забележаното клиентско време без индекси е околу 70 секунди. За клиентските мерења треба да се усогласи и бројот на преземени редови. |
| | 191 | |
| | 192 | {{{ |
| | 193 | #!sql |
| | 194 | BEGIN READ ONLY; |
| | 195 | SET LOCAL statement_timeout = '180s'; |
| | 196 | |
| | 197 | EXPLAIN (ANALYZE, BUFFERS, VERBOSE) |
| | 198 | SELECT * FROM kbnteam.v_driver_deliveries |
| | 199 | WHERE driver_user_id = 450; |
| | 200 | |
| | 201 | ROLLBACK; |
| | 202 | }}} |
| | 203 | |
| | 204 | ||= Метрика за дополнителното тестирање ||= Пред ||= По || |
| | 205 | || Planning Time (ms) || Не е измерено || Не е измерено || |
| | 206 | || Execution Time (ms) || Не е измерено || Не е измерено || |
| | 207 | || Тип на скенирање по табела || Не е евидентиран || Не е евидентиран || |
| | 208 | || Shared Hit Blocks / Shared Read Blocks || Не се измерени || Не се измерени || |