Changes between Version 2 and Version 3 of Phase1_Partitioning
- Timestamp:
- 12/10/25 00:49:38 (3 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Phase1_Partitioning
v2 v3 77 77 }}} 78 78 79 Сега ќе извршиме пример прашалник на старата табела('''rental_old''') каде што немаме партиции. 80 81 {{{ 82 EXPLAIN ANALYSE 83 SELECT * 84 FROM rental_old 85 WHERE 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 милиони записи со помош на филтер. 79 91 80 92 93 Извршување на иситиот прашалник на новата партиционирана табела('''rental'''). 94 95 {{{ 96 EXPLAIN ANALYSE 97 SELECT * 98 FROM rental 99 WHERE 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
