Changes between Version 2 and Version 3 of DriverLunchTimersView


Ignore:
Timestamp:
09/15/26 02:04:59 (13 days ago)
Author:
223235
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DriverLunchTimersView

    v2 v3  
    7474== Тестирање на перформанси ==
    7575
    76 Примерите користат илустративни идентификатори и датуми. За споредливи мерења се избираат вредности што постојат во базата и се задржуваат истите податоци, филтри, услови за кеширање и број на повторувања. Статистиките за табелите треба да бидат ажурирани во двете состојби.
     76Мерењата се евидентирани во DBeaver на 14 септември 2026 година. „Пред индексирање“ и „по индексирање“ ги означуваат групите наведени како „без индекси“ и „со индекси“ во евиденцијата. Точниот сет присутни индекси во секоја група не е евидентиран; „без индекси“ не потврдува отсуство на индекси од примарни и уникатни клучеви.
    7777
    78 === Тест прашалници ===
     78Наведените времиња се клиентски мерења од DBeaver, а не серверските Planning Time и Execution Time од EXPLAIN ANALYZE. Нема приложени планови, типови на скенирање или податоци за баферите. Вредностите се во милисекунди (ms).
     79
     80=== Измерен прашалник ===
    7981
    8082{{{
    8183#!sql
    82 BEGIN READ ONLY;
    83 SET LOCAL statement_timeout = '60s';
    84 
    85 -- Тест 1: по ден
    86 EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
    8784SELECT * FROM kbnteam.v_driver_lunch_timers
    88 WHERE lunch_weekday = 'Monday';
    89 
    90 -- Тест 2: по договор
    91 EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
    92 SELECT * FROM kbnteam.v_driver_lunch_timers
    93 WHERE contract_id = 1;
    94 
    95 -- Тест 3: по ресторан
    96 EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
    97 SELECT * FROM kbnteam.v_driver_lunch_timers
    98 WHERE rest_id = 1;
    99 
    100 ROLLBACK;
     85WHERE contract_id = 100 AND lunch_weekday = 'Monday'
     86ORDER BY lunch_start;
    10187}}}
    102 
    103 Тестот само по ден служи како споредбен случај. Дополнителниот индекс за термини е по contract_id, па првенствено го поддржува тестот по договор.
    10488
    10589=== Резултати пред индексирање ===
    10690
    107 Основната состојба ги задржува индексите на примарните клучеви и уникатните ограничувања. Останатите присутни индекси се евидентираат одделно. При споредба на заеднички индекси се користи истата почетна состојба за секој преглед.
    108 
    109 ||= Метрика ||= Тест 1 (по ден) ||= Тест 2 (по договор) ||= Тест 3 (по ресторан) ||
    110 || Planning Time || ___ ms || ___ ms || ___ ms ||
    111 || Execution Time || ___ ms || ___ ms || ___ ms ||
    112 || Rows Returned || ___ || ___ || ___ ||
    113 || Начин на читање по табела || ___ || ___ || ___ ||
    114 || Shared Hit Blocks || ___ || ___ || ___ ||
    115 || Shared Read Blocks || ___ || ___ || ___ ||
    116 
    117 {{{
    118 -- Планови и резултати пред дополнителното индексирање:
    119 
    120 }}}
     91||= Метрика ||= Измерен резултат ||
     92|| Клиентско време (ms) || 57 ||
     93|| Приказ на мерењето || Време прикажано со резултатот во DBeaver ||
     94|| Прикажани / преземени редови || 18 ||
     95|| Planning Time / Execution Time од EXPLAIN || Не се измерени ||
     96|| План, тип на скенирање и бафери || Не се приложени ||
    12197
    12298=== Дополнителни и заеднички индекси ===
    … …  
    163139=== Резултати по индексирање ===
    164140
    165 Мерењето ги користи истите тест прашалници и услови како почетното мерење.
     141||= Метрика ||= Измерен резултат ||
     142|| Клиентско време (ms) || 337 ||
     143|| Приказ на мерењето || Време прикажано со резултатот во DBeaver ||
     144|| Прикажани / преземени редови || 18 ||
     145|| Planning Time / Execution Time од EXPLAIN || Не се измерени ||
     146|| План, тип на скенирање и бафери || Не се приложени ||
    166147
    167 ||= Метрика ||= Тест 1 (по ден) ||= Тест 2 (по договор) ||= Тест 3 (по ресторан) ||
    168 || Planning Time || ___ ms || ___ ms || ___ ms ||
    169 || Execution Time || ___ ms || ___ ms || ___ ms ||
    170 || Rows Returned || ___ || ___ || ___ ||
    171 || Начин на читање по табела || ___ || ___ || ___ ||
    172 || Shared Hit Blocks || ___ || ___ || ___ ||
    173 || Shared Read Blocks || ___ || ___ || ___ ||
     148=== Анализа на резултатите ===
     149
     150||= Метрика ||= Пред ||= По ||= Промена на времето ||
     151|| Клиентско време (ms) || 57 || 337 || +491,2% ||
     152
     153Времето е подолго за 280 ms (491,2%), приближно 5,9 пати. Измерениот прашалник комбинира договор и ден и ги сортира резултатите по lunch_start. Причината за влошувањето не е утврдена; без план не може да се припише на конкретен индекс или сортирање.
     154
     155Промената се пресметува како 100 × (време по - време пред) / време пред. Негативна вредност значи пократко време, а позитивна подолго време. Процентот ја опишува разликата меѓу прикажаните вредности.
     156
     157Ова се поединечни набљудувања. Не се евидентирани контролирани повторувања, исти услови за кеширање и оптоварување или точните дефиниции на присутните индекси. Затоа промената на времето не е доказ дека индексите се единствената причина. Не се приложени мерења за INSERT, UPDATE и DELETE.
     158
     159=== Дополнително тестирање - сè уште неизмерено ===
     160
     161Следниот прашалник служи за ново мерење на серверскиот план со истиот филтер. Неговите резултати не се пополнети со клиентските времиња наведени погоре. За споредба се задржуваат исти податоци и поставки, се евидентираат присутните индекси, се ажурираат статистиките и се прават повеќе повторувања во двете состојби. Се споредуваат медијаната на времињата и плановите.
    174162
    175163{{{
    176 -- Планови и резултати по дополнителното индексирање:
     164#!sql
     165BEGIN READ ONLY;
     166SET LOCAL statement_timeout = '60s';
    177167
     168EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
     169SELECT * FROM kbnteam.v_driver_lunch_timers
     170WHERE contract_id = 100 AND lunch_weekday = 'Monday'
     171ORDER BY lunch_start;
     172
     173ROLLBACK;
    178174}}}
    179175
    180 === Анализа на подобрување ===
    181 
    182 ||= Метрика ||= Пред ||= По ||= Промена (%) ||
    183 || Execution Time (Тест 1) || ___ ms || ___ ms || ___ % ||
    184 || Execution Time (Тест 2) || ___ ms || ___ ms || ___ % ||
    185 || Execution Time (Тест 3) || ___ ms || ___ ms || ___ % ||
    186 
    187 Промената се пресметува како 100 × (време пред − време по) / време пред, кога почетното време е поголемо од нула. Негативна вредност означува побавно извршување.
    188 
    189 Изборот меѓу секвенцијално читање, индексно читање и други планови зависи од обемот на податоците, селективноста на филтрите и статистиките. Индексите не гарантираат забрзување или отстранување на сортирањата и спојувањата. Плановите и времињата се утврдуваат со мерење.
     176||= Метрика за дополнителното тестирање ||= Пред ||= По ||
     177|| Planning Time (ms) || Не е измерено || Не е измерено ||
     178|| Execution Time (ms) || Не е измерено || Не е измерено ||
     179|| Тип на скенирање по табела || Не е евидентиран || Не е евидентиран ||
     180|| Shared Hit Blocks / Shared Read Blocks || Не се измерени || Не се измерени ||