15.3. ÐаÑаллелÑнÑе планÑ
Так как каждÑй ÑабоÑий пÑоÑеÑÑ Ð²ÑполнÑÐµÑ Ð¿Ð°ÑаллелÑнÑÑ ÑаÑÑÑ Ð¿Ð»Ð°Ð½Ð° до конÑа, нелÑÐ·Ñ Ð¿ÑоÑÑо взÑÑÑ Ð¾Ð±ÑÑнÑй план запÑоÑа и запÑÑÑиÑÑ ÐµÐ³Ð¾ в неÑколÑÐºÐ¸Ñ Ð¸ÑполниÑелÑÑ . Ð ÑÑом ÑлÑÑае вÑе иÑполниÑели вÑдавали Ð±Ñ Ð¿Ð¾Ð»Ð½Ñе копии вÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ набоÑа ÑезÑлÑÑаÑов, Ñак ÑÑо запÑÐ¾Ñ Ð²ÑполниÑÑÑ Ð½Ðµ бÑÑÑÑее, Ñем обÑÑно, а его ÑезÑлÑÑаÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð½ÐµÐºÐ¾ÑÑекÑнÑми. ÐмеÑÑо ÑÑого паÑаллелÑной ÑаÑÑÑÑ Ð¿Ð»Ð°Ð½Ð° должно бÑÑÑ Ñо, ÑÑо Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑоÑа пÑедÑÑавлÑеÑÑÑ ÐºÐ°Ðº ÑаÑÑиÑнÑй план; Ñо еÑÑÑ Ñакой план, пÑи вÑполнении коÑоÑого в оÑделÑном пÑоÑеÑÑе бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑено ÑолÑко подмножеÑÑво вÑÑ Ð¾Ð´Ð½ÑÑ ÑÑÑок, а ÐºÐ°Ð¶Ð´Ð°Ñ ÑÑебÑÑÑаÑÑÑ ÑÑÑока ÑезÑлÑÑаÑа бÑÐ´ÐµÑ Ð³Ð°ÑанÑиÑованно вÑдана Ñовно одним из ÑоÑÑÑдниÑаÑÑÐ¸Ñ Ð¿ÑоÑеÑÑов. ÐообÑе говоÑÑ, ÑÑо ознаÑаеÑ, ÑÑо ÑканиÑование нижележаÑей ÑаблиÑÑ Ð·Ð°Ð¿ÑоÑа должно пÑоводиÑÑÑÑ Ñ ÑÑÑÑом ÑаÑпаÑаллеливаниÑ.
15.3.1. ÐаÑаллелÑнÑе ÑканиÑованиÑ
РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ ÑледÑÑÑие Ð²Ð¸Ð´Ñ ÑканиÑований ÑаблиÑÑ, ÑаÑÑÑиÑаннÑе на паÑаллелÑное вÑполнение.
ÐÑи паÑаллелÑном поÑледоваÑелÑном ÑканиÑовании блоки ÑаблиÑÑ Ð±ÑдÑÑ ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ñ Ð½Ð° диапазонÑ, ÑаÑпÑеделÑемÑе Ð¼ÐµÐ¶Ð´Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑвÑÑÑими пÑоÑеÑÑами. ÐаждÑй ÑабоÑий пÑоÑеÑÑ ÑнаÑала завеÑÑÐ°ÐµÑ ÑканиÑование полÑÑенного диапазона блоков, а заÑем запÑаÑÐ¸Ð²Ð°ÐµÑ ÑледÑÑÑий диапазон.
ÐÑи паÑаллелÑном ÑканиÑовании кÑÑи по биÑовой каÑÑе один пÑоÑеÑÑ Ð²ÑбиÑаеÑÑÑ Ð½Ð° ÑÐ¾Ð»Ñ Ð²ÐµÐ´ÑÑего. ÐÑÐ¾Ñ Ð¿ÑоÑеÑÑ Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ ÑканиÑование одного или неÑколÑÐºÐ¸Ñ Ð¸Ð½Ð´ÐµÐºÑов и ÑÑÑÐ¾Ð¸Ñ Ð±Ð¸ÑовÑÑ ÐºÐ°ÑÑÑ, показÑваÑÑÑÑ, какие блоки ÑаблиÑÑ Ð½Ñжно поÑеÑиÑÑ. ÐаÑем ÑÑи блоки ÑазделÑÑÑÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑвÑÑÑими пÑоÑеÑÑами как пÑи паÑаллелÑном поÑледоваÑелÑном ÑканиÑовании. ÐÑÑгими Ñловами, ÑканиÑование кÑÑи вÑполнÑеÑÑÑ Ð² паÑаллелÑном Ñежиме, а ÑканиÑование нижележаÑего индекÑа â неÑ.
ÐÑи паÑаллелÑном ÑканиÑовании по индекÑÑ Ð¸Ð»Ð¸ паÑаллелÑном ÑканиÑовании ÑолÑко индекÑа взаимодейÑÑвÑÑÑие пÑоÑеÑÑÑ ÑиÑаÑÑ Ð´Ð°Ð½Ð½Ñе из индекÑа по оÑеÑеди. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð°ÑаллелÑное ÑканиÑование индекÑа поддеÑживаеÑÑÑ ÑолÑко Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑов-B-деÑевÑев. ÐаждÑй пÑоÑеÑÑ Ð±ÑÐ´ÐµÑ Ð²ÑбиÑаÑÑ Ð¾Ð´Ð¸Ð½ блок индекÑа Ñ Ñем, ÑÑÐ¾Ð±Ñ Ð¿ÑоÑканиÑоваÑÑ Ð¸ веÑнÑÑÑ Ð²Ñе коÑÑежи, на коÑоÑÑе он ÑÑÑлаеÑÑÑ; дÑÑгие пÑоÑеÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð² Ñо же вÑÐµÐ¼Ñ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ ÐºÐ¾ÑÑежи Ð´Ð»Ñ Ð´ÑÑгого блока индекÑа. РезÑлÑÑаÑÑ Ð¿Ð°ÑаллелÑного ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ B-деÑева каждÑй ÑабоÑий пÑоÑеÑÑ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð² оÑÑоÑÑиÑованном поÑÑдке.
РбÑдÑÑем Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑвиÑÑÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжка паÑаллелÑного вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸ Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ Ð²Ð°ÑианÑов ÑканиÑованиÑ, напÑимеÑ, ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов, оÑлиÑнÑÑ Ð¾Ñ B-деÑева.
15.3.2. ÐаÑаллелÑнÑе ÑоединениÑ
Ðак и в непаÑаллелÑном плане, ÑÐµÐ»ÐµÐ²Ð°Ñ ÑаблиÑа Ð¼Ð¾Ð¶ÐµÑ ÑоединÑÑÑÑÑ Ñ Ð¾Ð´Ð½Ð¾Ð¹ или неÑколÑкими дÑÑгими ÑаблиÑами Ñ Ð¸ÑполÑзованием вложеннÑÑ Ñиклов, ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ Ð¸Ð»Ð¸ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÑлиÑнием. ÐнÑÑÑенней ÑÑоÑоной ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð»Ñбой вид непаÑаллелÑного плана, коÑоÑÑй в оÑÑалÑном поддеÑживаеÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑиком, пÑи ÑÑловии, ÑÑо он безопаÑен Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð² паÑаллелÑном иÑполниÑеле. ÐнÑÑÑенней ÑÑоÑоной Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ паÑаллелÑнÑй план, в завиÑимоÑÑи Ð¾Ñ Ñипа ÑоединениÑ.
Ð Ñоединении Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñм Ñиклом внÑÑÑеннÑÑ ÑÑоÑона вÑегда непаÑаллелÑнаÑ. ХоÑÑ Ð¾Ð½Ð° вÑполнÑеÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ, ÑÑо ÑÑÑекÑивно, еÑли Ñ Ð²Ð½ÑÑÑенней ÑÑоÑÐ¾Ð½Ñ Ð¿ÑоизводиÑÑÑ ÑканиÑование индекÑа, Ñак как внеÑние коÑÑежи, а знаÑÐ¸Ñ Ð¸ ÑиклÑ, Ð½Ð°Ñ Ð¾Ð´ÑÑие знаÑÐµÐ½Ð¸Ñ Ð² индекÑе, ÑазделÑÑÑÑÑ Ð¿Ð¾ паÑаллелÑнÑм пÑоÑеÑÑам.
ÐÑи Ñоединении ÑлиÑнием Ñ Ð²Ð½ÑÑÑенней ÑÑоÑÐ¾Ð½Ñ Ð²Ñегда бÑÐ´ÐµÑ Ð½ÐµÐ¿Ð°ÑаллелÑнÑй план и, Ñаким обÑазом, он бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÑÑÑекÑивно, оÑобенно еÑли поÑÑебÑеÑÑÑ Ð¿ÑоизвеÑÑи ÑоÑÑиÑовкÑ, Ñак как ÑабоÑа и конеÑнÑе даннÑе бÑдÑÑ Ð¿Ð¾Ð²ÑоÑÑÑÑÑÑ Ð² каждом паÑаллелÑном пÑоÑеÑÑе.
ÐÑи Ñоединении по Ñ ÐµÑÑ (непаÑаллелÑном, без пÑеÑикÑа «parallel») внÑÑÑеннее Ñоединение вÑполнÑеÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð² каждом паÑаллелÑном пÑоÑеÑÑе, и в ÑезÑлÑÑаÑе они ÑÑÑоÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе копии Ñ ÐµÑ-ÑаблиÑÑ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÑÑÑекÑивно пÑи болÑÑой Ñ ÐµÑ-ÑаблиÑе или доÑогоÑÑоÑÑем плане. РпаÑаллелÑном Ñоединении по Ñ ÐµÑÑ Ñ Ð²Ð½ÑÑÑенней ÑÑоÑÐ¾Ð½Ñ Ð²ÑполнÑеÑÑÑ Ð¿Ð°ÑаллелÑное Ñ ÐµÑиÑование, пÑи коÑоÑом ÑабоÑа по поÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¾Ð±Ñей Ñ ÐµÑ-ÑаблиÑÑ ÑазделÑеÑÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð¿Ð°ÑаллелÑнÑми пÑоÑеÑÑами.
15.3.3. ÐаÑаллелÑное агÑегиÑование
Postgres Pro поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿Ð°ÑаллелÑное агÑегиÑование, вÑполнÑÑ Ð°Ð³ÑегиÑование в два ÑÑапа. СнаÑала каждÑй пÑоÑеÑÑ, задейÑÑвованнÑй в паÑаллелÑной ÑаÑÑи запÑоÑа, вÑполнÑÐµÑ Ñаг агÑегиÑованиÑ, вÑÐ´Ð°Ð²Ð°Ñ ÑаÑÑиÑнÑй ÑезÑлÑÑÐ°Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ извеÑÑной ÐµÐ¼Ñ Ð³ÑÑппÑ. Рплане ÑÑо оÑÑÐ°Ð¶Ð°ÐµÑ Ñзел Partial Aggregate. ÐаÑем ÑÑи пÑомежÑÑоÑнÑе ÑезÑлÑÑаÑÑ Ð¿ÐµÑедаÑÑÑÑ Ð²ÐµÐ´ÑÑÐµÐ¼Ñ ÑеÑез Ñзел Gather или Gather Merge. РнаконеÑ, ведÑÑий заново агÑегиÑÑÐµÑ ÑезÑлÑÑаÑÑ Ð²ÑеÑ
ÑабоÑиÑ
пÑоÑеÑÑов, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¾ÐºÐ¾Ð½ÑаÑелÑнÑй ÑезÑлÑÑаÑ. ÐÑо оÑÑÐ°Ð¶Ð°ÐµÑ Ð² плане Ñзел Finalize Aggregate.
Так как Ñзел Finalize Aggregate вÑполнÑеÑÑÑ Ð² ведÑÑем пÑоÑеÑÑе, запÑоÑÑ, вÑдаÑÑие доÑÑаÑоÑно болÑÑое колиÑеÑÑво гÑÑпп по оÑноÑÐµÐ½Ð¸Ñ Ðº ÑиÑÐ»Ñ Ð²Ñ
однÑÑ
ÑÑÑок, бÑдÑÑ ÑаÑÑениваÑÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑиком как менее пÑедпоÑÑиÑелÑнÑе. ÐапÑимеÑ, в Ñ
ÑдÑем ÑлÑÑае колиÑеÑÑво гÑÑпп, вÑÑвленнÑÑ
Ñзлом Finalize Aggregate, Ð¼Ð¾Ð¶ÐµÑ ÑавнÑÑÑÑÑ ÑиÑÐ»Ñ Ð²Ñ
однÑÑ
ÑÑÑок, обÑабоÑаннÑÑ
вÑеми ÑабоÑими пÑоÑеÑÑами на ÑÑапе Partial Aggregate. ÐÑевидно, ÑÑо в Ñакой ÑиÑÑаÑии иÑполÑзование паÑаллелÑного агÑегиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ даÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð³Ð¾ вÑигÑÑÑа пÑоизводиÑелÑноÑÑи. ÐланиÑовÑик запÑоÑов ÑÑиÑÑÐ²Ð°ÐµÑ ÑÑо в пÑоÑеÑÑе планиÑованиÑ, Ñак ÑÑо вÑÐ±Ð¾Ñ Ð¿Ð°ÑаллелÑного агÑегиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² подобнÑÑ
ÑлÑÑаÑÑ
оÑÐµÐ½Ñ Ð¼Ð°Ð»Ð¾Ð²ÐµÑоÑÑен.
ÐаÑаллелÑное агÑегиÑование поддеÑживаеÑÑÑ Ð½Ðµ во вÑеÑ
ÑлÑÑаÑÑ
. ЧÑÐ¾Ð±Ñ Ð¾Ð½Ð¾ поддеÑживалоÑÑ, агÑегаÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° бÑÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñной Ð´Ð»Ñ ÑаÑпаÑÐ°Ð»Ð»ÐµÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸ должна имеÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸ÑÑÑÑÑÑ ÑÑнкÑиÑ. ÐÑли пеÑеÑ
одное ÑоÑÑоÑние агÑегаÑной ÑÑнкÑии Ð¸Ð¼ÐµÐµÑ Ñип internal, она должна Ñакже имеÑÑ ÑÑнкÑии ÑеÑиализаÑии и деÑеÑиализаÑии. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº CREATE AGGREGATE. ÐаÑаллелÑное агÑегиÑование не поддеÑживаеÑÑÑ, еÑли вÑзов агÑегаÑной ÑÑнкÑии ÑодеÑÐ¶Ð¸Ñ Ð¿Ñедложение DISTINCT или ORDER BY. Также оно не поддеÑживаеÑÑÑ Ð´Ð»Ñ ÑоÑÑиÑÑÑÑиÑ
агÑегаÑов или когда запÑÐ¾Ñ Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð¿Ñедложение GROUPING SETS. Ðно Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÑолÑко когда вÑе ÑоединениÑ, задейÑÑвованнÑе в запÑоÑе, Ñакже вÑ
одÑÑ Ð² паÑаллелÑнÑÑ ÑаÑÑÑ Ð¿Ð»Ð°Ð½Ð°.
15.3.4. ÐаÑаллелÑное пÑиÑоединение
Ðогда ÑÑебÑеÑÑÑ Ð¾Ð±ÑединиÑÑ ÑÑÑоки из ÑазлиÑнÑÑ
иÑÑоÑников в единÑй Ð½Ð°Ð±Ð¾Ñ ÑезÑлÑÑаÑов, в Postgres Pro иÑполÑзÑÑÑÑÑ ÑÐ·Ð»Ñ Ð¿Ð»Ð°Ð½Ð° Append или MergeAppend. ÐÑо обÑÑно пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿Ñи ÑеализаÑии UNION ALL или пÑи ÑканиÑовании ÑекÑиониÑованной ÑаблиÑÑ. ÐаннÑе ÑÐ·Ð»Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÑименÑÑÑÑÑ ÐºÐ°Ðº в паÑаллелÑнÑÑ
, Ñак и в обÑÑнÑÑ
планаÑ
. Ðднако в паÑаллелÑнÑÑ
планаÑ
планиÑовÑик Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¼ÐµÐ½Ð¸ÑÑ Ð¸Ñ
на Ñзел Parallel Append.
ÐÑли в паÑаллелÑном плане иÑполÑзÑеÑÑÑ Ñзел Append, вÑе задейÑÑвованнÑе пÑоÑеÑÑÑ Ð²ÑполнÑÑÑ Ð¾ÑеÑедной доÑеÑний план ÑовмеÑÑно, пока он не бÑÐ´ÐµÑ Ð·Ð°Ð²ÐµÑÑÑн, и лиÑÑ Ð·Ð°Ñем, пÑимеÑно в одно вÑемÑ, пеÑеÑ
одÑÑ Ðº вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑледÑÑÑего доÑеÑнего плана. Ðогда же пÑименÑеÑÑÑ Parallel Append, иÑполниÑÐµÐ»Ñ ÑÑаÑаеÑÑÑ ÑавномеÑно ÑаÑпÑеделиÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð·Ð°Ð´ÐµÐ¹ÑÑвованнÑми пÑоÑеÑÑами вÑе доÑеÑние планÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ вÑполнÑлиÑÑ Ð¿Ð°ÑаллелÑно. ÐÑо позволÑÐµÑ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ ÐºÐ¾Ð½ÐºÑÑенÑии и не ÑÑаÑиÑÑ ÑеÑÑÑÑÑ Ð½Ð° запÑÑк доÑеÑнего плана Ð´Ð»Ñ ÑеÑ
пÑоÑеÑÑов, коÑоÑÑе не бÑдÑÑ ÐµÐ³Ð¾ вÑполнÑÑÑ.
ÐÑоме Ñого, в оÑлиÑие Ð¾Ñ Ð¾Ð±ÑÑного Ñзла Append, иÑполÑзование коÑоÑого внÑÑÑи паÑаллелÑного плана допÑÑкаеÑÑÑ ÑолÑко Ð´Ð»Ñ ÑаÑÑиÑнÑÑ
доÑеÑниÑ
планов, Ñзел Parallel Append Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑабаÑÑваÑÑ ÐºÐ°Ðº ÑаÑÑиÑнÑе, Ñак и не ÑаÑÑиÑнÑе доÑеÑние планÑ. ÐÐ»Ñ ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ ÑаÑÑиÑного плана бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÑолÑко один пÑоÑеÑÑ, поÑколÑÐºÑ ÐµÐ³Ð¾ многокÑаÑное ÑканиÑование пÑиведÑÑ Ð»Ð¸ÑÑ Ðº дÑблиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑезÑлÑÑаÑов. Таким обÑазом, Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¾Ð², обÑединÑÑÑиÑ
неÑколÑко набоÑов ÑезÑлÑÑаÑов, можно доÑÑиÑÑ Ð¿Ð°ÑаллелÑного вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½Ð° вÑÑоком ÑÑовне, даже когда ÑÑÑекÑивнÑе ÑаÑÑиÑнÑе Ð¿Ð»Ð°Ð½Ñ Ð¾ÑÑÑÑÑÑвÑÑÑ. ÐапÑимеÑ, ÑаÑÑмоÑÑим запÑÐ¾Ñ Ðº ÑекÑиониÑованной ÑаблиÑе, коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑÑекÑивно Ñеализован ÑолÑко Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¸Ð½Ð´ÐµÐºÑа, не поддеÑживаÑÑего паÑаллелÑное ÑканиÑование. ÐланиÑовÑик Ð¼Ð¾Ð¶ÐµÑ Ð²ÑбÑаÑÑ Ñзел Parallel Append Ð´Ð»Ñ Ð¿Ð°ÑаллелÑного обÑÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÑколÑкиÑ
обÑÑнÑÑ
планов Index Scan; в ÑÑом ÑлÑÑае каждое ÑканиÑование индекÑа бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð´Ð¾ полного завеÑÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¸Ð¼ пÑоÑеÑÑом, но пÑи ÑÑом ÑазнÑе ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±ÑдÑÑ Ð¾ÑÑÑеÑÑвлÑÑÑÑÑ Ð¿Ð°ÑаллелÑно.
ÐÑклÑÑиÑÑ Ð´Ð°Ð½Ð½ÑÑ ÑÑнкÑионалÑноÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ enable_parallel_append.
15.3.5. СовеÑÑ Ð¿Ð¾ паÑаллелÑнÑм планам
ÐÑли Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑа ожидаеÑÑÑ Ð¿Ð°ÑаллелÑнÑй план, но Ñакой план не ÑÑÑоиÑÑÑ, можно попÑÑаÑÑÑÑ ÑменÑÑиÑÑ parallel_setup_cost или parallel_tuple_cost. РазÑмееÑÑÑ, ÑÑÐ¾Ñ Ð¿Ð»Ð°Ð½ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½ÐµÐµ поÑледоваÑелÑного плана, пÑедпоÑиÑаемого планиÑовÑиком, но не вÑегда. ÐÑли Ð²Ñ Ð½Ðµ полÑÑаеÑе паÑаллелÑнÑй план даже Ñ Ð¾ÑÐµÐ½Ñ Ð¼Ð°Ð»ÐµÐ½Ñкими знаÑениÑми ÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑов (напÑимеÑ, ÑбÑоÑив оба Ð¸Ñ Ð² нолÑ), Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÐºÐ°ÐºÐ°Ñ-Ñо веÑÐºÐ°Ñ Ð¿ÑиÑина ÑомÑ, ÑÑо планиÑовÑик запÑоÑов не Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑÑоиÑÑ Ð¿Ð°ÑаллелÑнÑй план Ð´Ð»Ñ Ð²Ð°Ñего запÑоÑа. Ðа инÑоÑмаÑией о возможнÑÑ Ð¿ÑиÑÐ¸Ð½Ð°Ñ Ð¾Ð±ÑаÑиÑеÑÑ Ðº РазделÑ 15.2 и РазделÑ 15.4.
Ðогда вÑполнÑеÑÑÑ Ð¿Ð°ÑаллелÑнÑй план, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пÑимениÑÑ EXPLAIN (ANALYZE, VERBOSE), ÑÑÐ¾Ð±Ñ Ð¿ÑоÑмоÑÑеÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ Ð¿Ð¾ ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑÐ·Ð»Ñ Ð¿Ð»Ð°Ð½Ð° в ÑазÑезе ÑабоÑиÑ
пÑоÑеÑÑов. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð¾Ð¿ÑеделиÑÑ, ÑавномеÑно ли ÑаÑпÑеделÑеÑÑÑ ÑабоÑа Ð¼ÐµÐ¶Ð´Ñ Ð²Ñеми Ñзлами плана, и на более обÑем ÑÑовне понимаÑÑ Ñ
аÑакÑеÑиÑÑики пÑоизводиÑелÑноÑÑи плана.