| 117 | | Примерите користат илустративни идентификатори и датуми. За споредливи мерења се избираат вредности што постојат во базата и се задржуваат истите податоци, филтри, услови за кеширање и број на повторувања. Статистиките за табелите треба да бидат ажурирани во двете состојби. |
| 118 | | |
| 119 | | === Тест прашалници === |
| 120 | | |
| 121 | | {{{ |
| 122 | | #!sql |
| 123 | | BEGIN READ ONLY; |
| 124 | | SET LOCAL statement_timeout = '60s'; |
| 125 | | |
| 126 | | -- Тест 1: по тип и компанија |
| 127 | | EXPLAIN (ANALYZE, BUFFERS, VERBOSE) |
| | 117 | Мерењата се евидентирани во DBeaver на 14 септември 2026 година. „Пред индексирање“ и „по индексирање“ ги означуваат групите наведени како „без индекси“ и „со индекси“ во евиденцијата. Точниот сет присутни индекси во секоја група не е евидентиран; „без индекси“ не потврдува отсуство на индекси од примарни и уникатни клучеви. |
| | 118 | |
| | 119 | Наведените времиња се клиентски мерења од DBeaver, а не серверските Planning Time и Execution Time од EXPLAIN ANALYZE. Нема приложени планови, типови на скенирање или податоци за баферите. Вредностите се во милисекунди (ms). |
| | 120 | |
| | 121 | === Измерен прашалник === |
| | 122 | |
| | 123 | {{{ |
| | 124 | #!sql |
| 146 | | Основната состојба ги задржува индексите на примарните клучеви и уникатните ограничувања. Останатите присутни индекси се евидентираат одделно. При споредба на заеднички индекси се користи истата почетна состојба за секој преглед. |
| 147 | | |
| 148 | | ||= Метрика ||= Тест 1 (по тип и компанија) ||= Тест 2 (по компанија) ||= Тест 3 (по доставувач) || |
| 149 | | || Planning Time || ___ ms || ___ ms || ___ ms || |
| 150 | | || Execution Time || ___ ms || ___ ms || ___ ms || |
| 151 | | || Rows Returned || ___ || ___ || ___ || |
| 152 | | || Начин на читање по табела || ___ || ___ || ___ || |
| 153 | | || Shared Hit Blocks || ___ || ___ || ___ || |
| 154 | | || Shared Read Blocks || ___ || ___ || ___ || |
| 155 | | |
| 156 | | {{{ |
| 157 | | -- Планови и резултати пред дополнителното индексирање: |
| 158 | | |
| 159 | | }}} |
| | 131 | ||= Метрика ||= Измерен резултат || |
| | 132 | || Клиентско време (ms) || 544 || |
| | 133 | || Приказ на мерењето || Време прикажано со резултатот во DBeaver || |
| | 134 | || Прикажани / преземени редови || 1 || |
| | 135 | || Planning Time / Execution Time од EXPLAIN || Не се измерени || |
| | 136 | || План, тип на скенирање и бафери || Не се приложени || |
| 204 | | Мерењето ги користи истите тест прашалници и услови како почетното мерење. |
| 205 | | |
| 206 | | ||= Метрика ||= Тест 1 (по тип и компанија) ||= Тест 2 (по компанија) ||= Тест 3 (по доставувач) || |
| 207 | | || Planning Time || ___ ms || ___ ms || ___ ms || |
| 208 | | || Execution Time || ___ ms || ___ ms || ___ ms || |
| 209 | | || Rows Returned || ___ || ___ || ___ || |
| 210 | | || Начин на читање по табела || ___ || ___ || ___ || |
| 211 | | || Shared Hit Blocks || ___ || ___ || ___ || |
| 212 | | || Shared Read Blocks || ___ || ___ || ___ || |
| 213 | | |
| 214 | | {{{ |
| 215 | | -- Планови и резултати по дополнителното индексирање: |
| 216 | | |
| 217 | | }}} |
| 218 | | |
| 219 | | === Анализа на подобрување === |
| 220 | | |
| 221 | | ||= Метрика ||= Пред ||= По ||= Промена (%) || |
| 222 | | || Execution Time (Тест 1) || ___ ms || ___ ms || ___ % || |
| 223 | | || Execution Time (Тест 2) || ___ ms || ___ ms || ___ % || |
| 224 | | || Execution Time (Тест 3) || ___ ms || ___ ms || ___ % || |
| 225 | | |
| 226 | | Промената се пресметува како 100 × (време пред − време по) / време пред, кога почетното време е поголемо од нула. Негативна вредност означува побавно извршување. |
| 227 | | |
| 228 | | Изборот меѓу секвенцијално читање, индексно читање и други планови зависи од обемот на податоците, селективноста на филтрите и статистиките. Индексите не гарантираат забрзување или отстранување на сортирањата и спојувањата. Плановите и времињата се утврдуваат со мерење. |
| | 181 | ||= Метрика ||= Измерен резултат || |
| | 182 | || Клиентско време (ms) || 55 || |
| | 183 | || Приказ на мерењето || Време прикажано со резултатот во DBeaver || |
| | 184 | || Прикажани / преземени редови || 1 || |
| | 185 | || Planning Time / Execution Time од EXPLAIN || Не се измерени || |
| | 186 | || План, тип на скенирање и бафери || Не се приложени || |
| | 187 | |
| | 188 | === Анализа на резултатите === |
| | 189 | |
| | 190 | ||= Метрика ||= Пред ||= По ||= Промена на времето || |
| | 191 | || Клиентско време (ms) || 544 || 55 || -89,9% || |
| | 192 | |
| | 193 | Времето е пократко за 489 ms (89,9%), приближно 9,9 пати. Ова е забележан резултат за конкретниот клиент. Без план на извршување не може да се утврди кој индекс придонел за разликата. Користена е точната прикажана вредност 544 ms. |
| | 194 | |
| | 195 | Промената се пресметува како 100 × (време по - време пред) / време пред. Негативна вредност значи пократко време, а позитивна подолго време. Процентот ја опишува разликата меѓу прикажаните вредности. |
| | 196 | |
| | 197 | Ова се поединечни набљудувања. Не се евидентирани контролирани повторувања, исти услови за кеширање и оптоварување или точните дефиниции на присутните индекси. Затоа промената на времето не е доказ дека индексите се единствената причина. Не се приложени мерења за INSERT, UPDATE и DELETE. |
| | 198 | |
| | 199 | === Дополнително тестирање - сè уште неизмерено === |
| | 200 | |
| | 201 | Следниот прашалник служи за ново мерење на серверскиот план со истиот филтер. Неговите резултати не се пополнети со клиентските времиња наведени погоре. За споредба се задржуваат исти податоци и поставки, се евидентираат присутните индекси, се ажурираат статистиките и се прават повеќе повторувања во двете состојби. Се споредуваат медијаната на времињата и плановите. |
| | 202 | |
| | 203 | {{{ |
| | 204 | #!sql |
| | 205 | BEGIN READ ONLY; |
| | 206 | SET LOCAL statement_timeout = '60s'; |
| | 207 | |
| | 208 | EXPLAIN (ANALYZE, BUFFERS, VERBOSE) |
| | 209 | SELECT * FROM kbnteam.v_reviews_full |
| | 210 | WHERE customer_user_id = 500000; |
| | 211 | |
| | 212 | ROLLBACK; |
| | 213 | }}} |
| | 214 | |
| | 215 | ||= Метрика за дополнителното тестирање ||= Пред ||= По || |
| | 216 | || Planning Time (ms) || Не е измерено || Не е измерено || |
| | 217 | || Execution Time (ms) || Не е измерено || Не е измерено || |
| | 218 | || Тип на скенирање по табела || Не е евидентиран || Не е евидентиран || |
| | 219 | || Shared Hit Blocks / Shared Read Blocks || Не се измерени || Не се измерени || |