Changes between Version 2 and Version 3 of OrdersFullView


Ignore:
Timestamp:
09/15/26 02:06:45 (12 days ago)
Author:
223235
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OrdersFullView

    v2 v3  
    113113== Тестирање на перформанси ==
    114114
    115 Примерите користат илустративни идентификатори и датуми. За споредливи мерења се избираат вредности што постојат во базата и се задржуваат истите податоци, филтри, услови за кеширање и број на повторувања. Статистиките за табелите треба да бидат ажурирани во двете состојби.
    116 
    117 === Тест прашалници ===
    118 
    119 {{{
    120 #!sql
    121 BEGIN READ ONLY;
    122 SET LOCAL statement_timeout = '60s';
    123 
    124 -- Тест 1: по клиент и датум
    125 EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
     115Мерењата се евидентирани во DBeaver на 14 септември 2026 година. „Пред индексирање“ и „по индексирање“ ги означуваат групите наведени како „без индекси“ и „со индекси“ во евиденцијата. Точниот сет присутни индекси во секоја група не е евидентиран; „без индекси“ не потврдува отсуство на индекси од примарни и уникатни клучеви.
     116
     117Наведените времиња се клиентски мерења од DBeaver, а не серверските Planning Time и Execution Time од EXPLAIN ANALYZE. Нема приложени планови, типови на скенирање или податоци за баферите. Вредностите се во милисекунди (ms).
     118
     119=== Измерен прашалник ===
     120
     121{{{
     122#!sql
    126123SELECT * FROM kbnteam.v_orders_full
    127 WHERE customer_user_id = 1
    128   AND order_datetime >= DATE '2026-09-01'
    129   AND order_datetime < DATE '2026-10-01';
    130 
    131 -- Тест 2: по компаниска нарачка
    132 EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
    133 SELECT * FROM kbnteam.v_orders_full
    134 WHERE comp_order_id = 1;
    135 
    136 -- Тест 3: по компанија
    137 EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
    138 SELECT * FROM kbnteam.v_orders_full
    139 WHERE order_company_id = 1;
    140 
    141 ROLLBACK;
    142 }}}
    143 
    144 Индексот по клиент и датум е наменет за пристап во рамки на конкретен клиент. Самостоен услов по датум нема ист начин на пристап како услов што ја задава и водечката колона customer_user_id.
     124WHERE customer_user_id = 1202947 AND order_total >= 40;
     125}}}
    145126
    146127=== Резултати пред индексирање ===
    147128
    148 Основната состојба ги задржува индексите на примарните клучеви и уникатните ограничувања. Останатите присутни индекси се евидентираат одделно. При споредба на заеднички индекси се користи истата почетна состојба за секој преглед.
    149 
    150 ||= Метрика ||= Тест 1 (по клиент и датум) ||= Тест 2 (по компаниска нарачка) ||= Тест 3 (по компанија) ||
    151 || Planning Time || ___ ms || ___ ms || ___ ms ||
    152 || Execution Time || ___ ms || ___ ms || ___ ms ||
    153 || Rows Returned || ___ || ___ || ___ ||
    154 || Начин на читање по табела || ___ || ___ || ___ ||
    155 || Shared Hit Blocks || ___ || ___ || ___ ||
    156 || Shared Read Blocks || ___ || ___ || ___ ||
    157 
    158 {{{
    159 -- Планови и резултати пред дополнителното индексирање:
    160 
    161 }}}
     129||= Метрика ||= Измерен резултат ||
     130|| Клиентско време (ms) || 2598 ||
     131|| Приказ на мерењето || Време прикажано со резултатот во DBeaver ||
     132|| Прикажани / преземени редови || 1 ||
     133|| Planning Time / Execution Time од EXPLAIN || Не се измерени ||
     134|| План, тип на скенирање и бафери || Не се приложени ||
    162135
    163136=== Дополнителни и заеднички индекси ===
    … …  
    219192=== Резултати по индексирање ===
    220193
    221 Мерењето ги користи истите тест прашалници и услови како почетното мерење.
    222 
    223 ||= Метрика ||= Тест 1 (по клиент и датум) ||= Тест 2 (по компаниска нарачка) ||= Тест 3 (по компанија) ||
    224 || Planning Time || ___ ms || ___ ms || ___ ms ||
    225 || Execution Time || ___ ms || ___ ms || ___ ms ||
    226 || Rows Returned || ___ || ___ || ___ ||
    227 || Начин на читање по табела || ___ || ___ || ___ ||
    228 || Shared Hit Blocks || ___ || ___ || ___ ||
    229 || Shared Read Blocks || ___ || ___ || ___ ||
    230 
    231 {{{
    232 -- Планови и резултати по дополнителното индексирање:
    233 
    234 }}}
    235 
    236 === Анализа на подобрување ===
    237 
    238 ||= Метрика ||= Пред ||= По ||= Промена (%) ||
    239 || Execution Time (Тест 1) || ___ ms || ___ ms || ___ % ||
    240 || Execution Time (Тест 2) || ___ ms || ___ ms || ___ % ||
    241 || Execution Time (Тест 3) || ___ ms || ___ ms || ___ % ||
    242 
    243 Промената се пресметува како 100 × (време пред − време по) / време пред, кога почетното време е поголемо од нула. Негативна вредност означува побавно извршување.
    244 
    245 Изборот меѓу секвенцијално читање, индексно читање и други планови зависи од обемот на податоците, селективноста на филтрите и статистиките. Индексите не гарантираат забрзување или отстранување на сортирањата и спојувањата. Плановите и времињата се утврдуваат со мерење.
     194||= Метрика ||= Измерен резултат ||
     195|| Клиентско време (ms) || 2591 ||
     196|| Приказ на мерењето || Време прикажано со резултатот во DBeaver ||
     197|| Прикажани / преземени редови || 1 ||
     198|| Planning Time / Execution Time од EXPLAIN || Не се измерени ||
     199|| План, тип на скенирање и бафери || Не се приложени ||
     200
     201=== Анализа на резултатите ===
     202
     203||= Метрика ||= Пред ||= По ||= Промена на времето ||
     204|| Клиентско време (ms) || 2598 || 2591 || -0,3% ||
     205
     206Времето е пократко само за 7 ms (0,3%). Едно вакво мерење не покажува значајно практично забрзување. Измерениот услов е по клиент и минимален износ, без датумски опсег.
     207
     208Промената се пресметува како 100 × (време по - време пред) / време пред. Негативна вредност значи пократко време, а позитивна подолго време. Процентот ја опишува разликата меѓу прикажаните вредности.
     209
     210Ова се поединечни набљудувања. Не се евидентирани контролирани повторувања, исти услови за кеширање и оптоварување или точните дефиниции на присутните индекси. Затоа промената на времето не е доказ дека индексите се единствената причина. Не се приложени мерења за INSERT, UPDATE и DELETE.
     211
     212=== Дополнително тестирање - сè уште неизмерено ===
     213
     214Следниот прашалник служи за ново мерење на серверскиот план со истиот филтер. Неговите резултати не се пополнети со клиентските времиња наведени погоре. За споредба се задржуваат исти податоци и поставки, се евидентираат присутните индекси, се ажурираат статистиките и се прават повеќе повторувања во двете состојби. Се споредуваат медијаната на времињата и плановите.
     215
     216{{{
     217#!sql
     218BEGIN READ ONLY;
     219SET LOCAL statement_timeout = '60s';
     220
     221EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
     222SELECT * FROM kbnteam.v_orders_full
     223WHERE customer_user_id = 1202947 AND order_total >= 40;
     224
     225ROLLBACK;
     226}}}
     227
     228||= Метрика за дополнителното тестирање ||= Пред ||= По ||
     229|| Planning Time (ms) || Не е измерено || Не е измерено ||
     230|| Execution Time (ms) || Не е измерено || Не е измерено ||
     231|| Тип на скенирање по табела || Не е евидентиран || Не е евидентиран ||
     232|| Shared Hit Blocks / Shared Read Blocks || Не се измерени || Не се измерени ||