| 100 | | Примерите користат илустративни идентификатори и датуми. За споредливи мерења се избираат вредности што постојат во базата и се задржуваат истите податоци, филтри, услови за кеширање и број на повторувања. Статистиките за табелите треба да бидат ажурирани во двете состојби. |
| 101 | | |
| 102 | | === Тест прашалници === |
| 103 | | |
| 104 | | {{{ |
| 105 | | #!sql |
| 106 | | BEGIN READ ONLY; |
| 107 | | SET LOCAL statement_timeout = '60s'; |
| 108 | | |
| 109 | | -- Тест 1: по компанија |
| 110 | | EXPLAIN (ANALYZE, BUFFERS, VERBOSE) |
| | 100 | Мерењата се евидентирани во DBeaver на 14 септември 2026 година. „Пред индексирање“ и „по индексирање“ ги означуваат групите наведени како „без индекси“ и „со индекси“ во евиденцијата. Точниот сет присутни индекси во секоја група не е евидентиран; „без индекси“ не потврдува отсуство на индекси од примарни и уникатни клучеви. |
| | 101 | |
| | 102 | Наведените времиња се клиентски мерења од DBeaver, а не серверските Planning Time и Execution Time од EXPLAIN ANALYZE. Нема приложени планови, типови на скенирање или податоци за баферите. Вредностите се во милисекунди (ms). |
| | 103 | |
| | 104 | === Измерен прашалник === |
| | 105 | |
| | 106 | {{{ |
| | 107 | #!sql |
| 124 | | Основната состојба ги задржува индексите на примарните клучеви и уникатните ограничувања. Останатите присутни индекси се евидентираат одделно. При споредба на заеднички индекси се користи истата почетна состојба за секој преглед. |
| 125 | | |
| 126 | | ||= Метрика ||= Тест 1 (по компанија) ||= Тест 2 (по ресторан) || |
| 127 | | || Planning Time || ___ ms || ___ ms || |
| 128 | | || Execution Time || ___ ms || ___ ms || |
| 129 | | || Rows Returned || ___ || ___ || |
| 130 | | || Начин на читање по табела || ___ || ___ || |
| 131 | | || Shared Hit Blocks || ___ || ___ || |
| 132 | | || Shared Read Blocks || ___ || ___ || |
| 133 | | |
| 134 | | {{{ |
| 135 | | -- Планови и резултати пред дополнителното индексирање: |
| 136 | | |
| 137 | | }}} |
| | 114 | ||= Метрика ||= Измерен резултат || |
| | 115 | || Клиентско време (ms) || 2555 || |
| | 116 | || Приказ на мерењето || Време прикажано со резултатот во DBeaver || |
| | 117 | || Прикажани / преземени редови || 0 || |
| | 118 | || Planning Time / Execution Time од EXPLAIN || Не се измерени || |
| | 119 | || План, тип на скенирање и бафери || Не се приложени || |
| 192 | | Мерењето ги користи истите тест прашалници и услови како почетното мерење. |
| 193 | | |
| 194 | | ||= Метрика ||= Тест 1 (по компанија) ||= Тест 2 (по ресторан) || |
| 195 | | || Planning Time || ___ ms || ___ ms || |
| 196 | | || Execution Time || ___ ms || ___ ms || |
| 197 | | || Rows Returned || ___ || ___ || |
| 198 | | || Начин на читање по табела || ___ || ___ || |
| 199 | | || Shared Hit Blocks || ___ || ___ || |
| 200 | | || Shared Read Blocks || ___ || ___ || |
| 201 | | |
| 202 | | {{{ |
| 203 | | -- Планови и резултати по дополнителното индексирање: |
| 204 | | |
| 205 | | }}} |
| 206 | | |
| 207 | | === Анализа на подобрување === |
| 208 | | |
| 209 | | ||= Метрика ||= Пред ||= По ||= Промена (%) || |
| 210 | | || Execution Time (Тест 1) || ___ ms || ___ ms || ___ % || |
| 211 | | || Execution Time (Тест 2) || ___ ms || ___ ms || ___ % || |
| 212 | | |
| 213 | | Промената се пресметува како 100 × (време пред − време по) / време пред, кога почетното време е поголемо од нула. Негативна вредност означува побавно извршување. |
| 214 | | |
| 215 | | Изборот меѓу секвенцијално читање, индексно читање и други планови зависи од обемот на податоците, селективноста на филтрите и статистиките. Индексите не гарантираат забрзување или отстранување на сортирањата и спојувањата. Плановите и времињата се утврдуваат со мерење. |
| | 174 | ||= Метрика ||= Измерен резултат || |
| | 175 | || Клиентско време (ms) || 1966 || |
| | 176 | || Приказ на мерењето || Време прикажано со резултатот во DBeaver || |
| | 177 | || Прикажани / преземени редови || 0 || |
| | 178 | || Planning Time / Execution Time од EXPLAIN || Не се измерени || |
| | 179 | || План, тип на скенирање и бафери || Не се приложени || |
| | 180 | |
| | 181 | === Анализа на резултатите === |
| | 182 | |
| | 183 | ||= Метрика ||= Пред ||= По ||= Промена на времето || |
| | 184 | || Клиентско време (ms) || 2555 || 1966 || -23,1% || |
| | 185 | |
| | 186 | Времето е пократко за 589 ms (23,1%), но двата теста враќаат празен резултат. Од ова не може да се оцени перформансата на извештај што враќа договори и приходи. Потребно е дополнително мерење за компанија со соодветни податоци. |
| | 187 | |
| | 188 | Промената се пресметува како 100 × (време по - време пред) / време пред. Негативна вредност значи пократко време, а позитивна подолго време. Процентот ја опишува разликата меѓу прикажаните вредности. |
| | 189 | |
| | 190 | Ова се поединечни набљудувања. Не се евидентирани контролирани повторувања, исти услови за кеширање и оптоварување или точните дефиниции на присутните индекси. Затоа промената на времето не е доказ дека индексите се единствената причина. Не се приложени мерења за INSERT, UPDATE и DELETE. |
| | 191 | |
| | 192 | === Дополнително тестирање - сè уште неизмерено === |
| | 193 | |
| | 194 | Следниот прашалник служи за ново мерење на серверскиот план со истиот филтер. Неговите резултати не се пополнети со клиентските времиња наведени погоре. За споредба се задржуваат исти податоци и поставки, се евидентираат присутните индекси, се ажурираат статистиките и се прават повеќе повторувања во двете состојби. Се споредуваат медијаната на времињата и плановите. |
| | 195 | |
| | 196 | {{{ |
| | 197 | #!sql |
| | 198 | BEGIN READ ONLY; |
| | 199 | SET LOCAL statement_timeout = '60s'; |
| | 200 | |
| | 201 | EXPLAIN (ANALYZE, BUFFERS, VERBOSE) |
| | 202 | SELECT * FROM kbnteam.v_contracts_revenue |
| | 203 | WHERE company_id = 250; |
| | 204 | |
| | 205 | ROLLBACK; |
| | 206 | }}} |
| | 207 | |
| | 208 | ||= Метрика за дополнителното тестирање ||= Пред ||= По || |
| | 209 | || Planning Time (ms) || Не е измерено || Не е измерено || |
| | 210 | || Execution Time (ms) || Не е измерено || Не е измерено || |
| | 211 | || Тип на скенирање по табела || Не е евидентиран || Не е евидентиран || |
| | 212 | || Shared Hit Blocks / Shared Read Blocks || Не се измерени || Не се измерени || |