Changes between Version 2 and Version 3 of Phase1_Partitioning


Ignore:
Timestamp:
12/10/25 00:49:38 (3 weeks ago)
Author:
226052
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Phase1_Partitioning

    v2 v3  
    7777}}}
    7878
     79Сега ќе извршиме пример прашалник на старата табела('''rental_old''') каде што немаме партиции.
     80
     81{{{
     82EXPLAIN ANALYSE
     83SELECT *
     84FROM rental_old
     85WHERE rental_date >= '2022-01-01' AND rental_date <= '2022-12-31';
     86}}}
     87
     88[[Image(rental_query.png)]]
     89
     90Од тука може да забележиме дека PostgreSQL мора да направи целосен Sequential Scan на табелата и бидејќи табелата не е партиционирана query optimizer - от нема да може да ги прескокне редовите што не припаѓаат на бараниот датумски опсег, па затоа ја скенира цела табела и елеминира повеќе од 8 милиони записи со помош на филтер.
    7991
    8092
     93Извршување на иситиот прашалник на новата партиционирана табела('''rental''').
     94
     95{{{
     96EXPLAIN ANALYSE
     97SELECT *
     98FROM rental
     99WHERE rental_date >= '2022-01-01' AND rental_date <= '2022-12-31';
     100}}}
     101
     102[[Image(rental_query_partition.png)]]
     103
     104По партиционирањето, PostgreSQL веќе не ја скенира целата табела, туку со помош на '''partition pruning''' кој што во поновите верзии на PostgreSQL е пуштен по default PostgreSQL не ги скенира партициите во кој што WHERE условот не е исполнет. Ја скенира само конкретната партиција '''rental_2022''' и со тоа наместо да обработуваат 10 милиони редови, се обработуваат само податоците во релевантната партиција, времето на извршување е скоро преполовено и со помош на филтер се елеминираат околу 5 илјади редови наместо 8 милиони.
     105
     106
     107