From 68ad88ef5afa12a0a86ff33d6cf025d5007169b1 Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Mon, 25 Sep 2023 12:24:02 +0200 Subject: [PATCH] Add adaptive executor diagram --- images/executor-connections.png | Bin 0 -> 29460 bytes src/backend/distributed/README.md | 2 ++ 2 files changed, 2 insertions(+) create mode 100755 images/executor-connections.png diff --git a/images/executor-connections.png b/images/executor-connections.png new file mode 100755 index 0000000000000000000000000000000000000000..064b43353d561a078bb50b0b09ecc21e92270a4d GIT binary patch literal 29460 zcmdqJcT`l#_b+-t3?PaEDkx!$fRZFh20;W7Xe3B%z(GWE&NQ?LG75qYNm4gR&KZOz z$_NMoO3sZ#5}GD8G}2ADb-?+4=Xck=@6Wg1dTZ&@Q(dRdu3fu!?eN+4Qd>*)1jBg- z2!c-BQ@f)BL3Ak)L>qnV2xt-gT~QAFL*u5Ssst5wam<4UI_uk-w;`w`^7!_n!{C|T zShtmY$INXGmrT>VuaJ8oF6rmV)_u{tdvkDOsGHBg%U~~ODR&nouQP9e z9N(zQ%cE}XV&-y0olGST0fNyqN!5#-os!_c5TguYz3 zMG}^76f`Z||11qF-2XYVA`SRQnD_r1kJ(_E2f`0!^?6{aI-(Mr?StI*EfDnXmBLO_ zq#%=mBUk6nFjJBL*u#e1&E=iC;T`OUGN1L>vRkNh_C(x5l=;&ZG|FdZ)ZC$E_8%4j zDLIw`K@rMSuW{+KJ4aX*o4#`@LmBj3Kz81$31n*8OLHrl)A9ngT>jP{>=>h>xeR&U zgQdy&&OlD*`ZuPX$`$&d<1mvN`7-7?i-n{w9(7kb2|3fbo~sp7AoDokSSBu^5+{f_ zmNlHyj=E^eH9`O7u+AaZ2ojmXML>R~mjaAF8Z$XxPr`qY^>>^5&eB*269!#-8a0`7 zN}hPKjfZ{(YFZ6z~ILfl0rGVwf{{YKrafxdyElZ2yV|?YAE^TIHz>h;b zk#mpwZy{PNqcXihmkuqIAW#kLX&rTVinFLhl?}Ic1j#lL{`gUNwV&T#i4Ht3$be;* zmGfN^jSKCrXO~xLAsA~XOwfd0fLRedZl9nd|bj6`|4He@zmehm9kTH*KcIJ}aT>G9-4=W_;EY zvfS@6ltzaboftl8VY|P9{j?KC=`rYDHMqBMivEr){G_=5gs%6hWRa!GdIpQPMJVM6 zqR4;ewpZmLtrPo;5|Ph6@1C)fk_G#NU%1{BB{NFH&jZiM zPo5=J{9I5ScWD?`d&nIoGU2o>YvGCVYvgA3#k7Kmr zg1PB$FMXJb7-m7pe$%jua}DoKmhlqlbFCG9>^pI&MH8m9_@gvTY4XVo39XNj%(CNd z-EusE>@8cQIcxmRk{6z1?L(Vi%C)`^`y2M`4;I;sYGe?PSEWoHvuxdJ%Y`!BQcYg` zN5S#Hy&ay`TY*juJLFrTB6Z$tpLr5*w(N7~>qXA+qWu|X-av`RjA$TtjtjVsI#kuM z%gXKkoa)qzU&CIL2vsSPs?sZ zS-wljaV#|KC=cZh_~7$b$-Y`Jodwb0 ztBoAx5B&~L1+D9#uYd^3n$jEeRoBd{aZ2rJ(2nn#U5IF6IaNV*$&K8oVU~|^zVYZ$ zY_oT=Pufz+amg5+PqndHV$Y^l2xD{7szO!J^DGG&m%HX%U zhW#c;m|+~?;V>1yw>vB|aWjHKYwbi)6P57l=V|yFeqw6Lq@gFgQ;wXoe9ICSGwYQj z6*c+0f#y7OWwgZ&aX<2DvvFzx(=AK4bM>2_p4eBTIOn9VjF8_&Z{|BJw)&nk+ant! zmQ>&GRu~P}Y>w~fL(`%!Z(w(O0~6%-wn=3TKf@X%+0V(-gqsxhR-4V$Bon+^*v)8P z(_LT`y509)zM}H&j4x9w0!V@?Z%8cn&JWeHLG!@6c-qG3X-YET!zo+IoDDs^T*27u z0!NV+vW_U9c=W4a6{!KKF2aikKHWWk|+_Sip5oc!0MI&rgjhU$Rn%(9X^+@|65(hsA=C87o|^v5gY`GzRwk?q zr88ysGcU-IzK9yQ({hiJKgCS)EsqOQ*KK=`_RV&gW*%XMIO5$U&F=qnANLrf$3k}n z2j@+T+{OzliU^EpV=o0f#1=-k;!c(izYcbl8bE6P@cg!2!ugvB7tj`xBGscv0dXw! zE`scVLm{ob>D3lasq5B0ioWKqVw>WSONZE?wtN7)d9tm1*)waFrLnxcXmsg!hK~Ln z`Ek!thfX%jG$vj}Zf)ns7{8_JC-zIRCXO~OXk!L`CfSw7F6z^JnlFJodl$>ANpiNh z3n&c8r>H-58AN*336y73d5!zBwC6jrA8uakFMJv0!T61*Z-|P%jVJ-&6Cit2Tmt7uv}@Hs6L$YX0xLzEnw8i*D_Wt5Gup6cy;64O)SjMWO+ z{C0ZjQidXu!L6hy;?1xCO`pjNhPyTO3L~+o2*Sx$>JPsfR z0{Rq*xb1r^vXDiOj%0S|&5l54lCtcf#E#V)w>z#apr8KnQJo>r$aA2iXj6LbA;VK6 z>*1<3A2kR5nwY6ddqX`^(ENRi2Z0Z5eFUHV5%|Pjr~=bo;@D9x8|Qm7k#5Fnx7I*8 z6k!jGriL-YQ7g5L-J66Oq8Op$X1?9e{L9a@>7PD4!_T4@vyv)yf$wm-hWXi`3>)*u zCYz@%qTldQV}eY#G@@M|c9am#OPbO1FLbNRO;_tbQ#0$uI1M`+ANrG{)ir;#^-3>= zBaZBE#Y=KxHY*8)PX?_Jy4zPFewuHWu8Or22MH-TbcpzR{uPZ!ynAmWQDYzL=v?{2 zOX}$~r96?(g9I8KVI?kkM%}u}rm*C?UK@#?d*q@HJ%%E-nLU^~d=<({2KtQcP7Yts z62i);EQ5E4+DBs4_wJT>GQ3e!x}-z3ivKcbZ9^ zyP|a4HNR%Sz)r!uueV)0b~x67ueAYnE>pk8R(hl0j4o|{>C#Q!*6Sn7n}XeuYo^mq zJCa3Ch|w7SB7PiKEb$!FEVF={tlM7eDBIuVab~_Ycn@R-)rguEA&TeBQz(T>yxHk{4VGgM;6Y+SoULz z0rx39$k52 zxAF%~oDft|?bzOm0s@BH2tgHpyP2}HyZrZ1K1IW;ZZoXw+fCE{ZP%*%xSZOH@>ePZ^mZn=@tOQv1?BOE1h@ z4aIO|SuNilZXGGzET|2LTfXgHAT;#=6Gq2kWg^15Q7*#I5Qp(!`}`yyn=d;0hWOc) zpw&kDKwuO6lXOL$r4iXy*{}Q!gL(AL7bkzn%4F25Yjk~^cl3=4U03jSrl1Uui%m)4$YNc>Rc7SbhMfgwyFN@<_m6E$1B_IH~5UQ8Te8c-4DsrsPJdI{Pc~I%7vr z9C=j;Tj5&!%AqTAO)78B?v@?+-Kf9GUtlzvRKRtKitT=Y%VdWVWon>>$i1JD)`7co zffKT{=R(`&%92DenXm zvN-ZQg-c!+Le5V|3!UOphf)O?ct$a<>xw-N;G4-tv;5T>Qd?ru4)J>E8#d2 zc?WMom0o%%#hI}8NYea>U6I@tvpSa3a;fML+U0&j(7diNUc9KDVk_#gw1is@DD!M& z3s1$rVci~Sy%N&JdJ4yY;p30he)`~;K0{>(L#LILQA_CvpUv+qc?11sTJc3rO?3tK z=0R~6879ANvh}r7`!_%ID{$j7&xFO|79`Ufv6~j(T+AxFR3zf94JcfAhy1cY0#}%3 zcVywlW8=CcBzL0gQlBg4>Tf2Sq9*2XCtW6f99j^dTr<|<)~2R0Wp^U$cexSV+I(!~ z%~|ejRK(uALh`sTq2MDARQc!fTYv1d-&MR&h5z2P-yc=!DRHzW3;}$GcNs$Xz7*tY zz8Um5q5Q)babze1N#6O(mA-`8baq5{x+dz)jYosh3+MkNbRBOT<#_T6XXw4phG^60t&LbUUlWf!d+&CI9jDch z%Ik1GqqFs#_i0Su6j$dYaaZ4+9*OF9mY=#xhrbeh-P32BMzSE{8d|;V594}^Ui+ajeG(r*b9k>?w6b)6Un3>$a1tmQPg{BE6=OH#A3F`Kf0s2_HQYI6ZP?9G814 z3LPSQuM>jl6YJ-2+7rt;>zo6XVWcVTQliJ3+AgZOnMoHXROu#0(-$UGKLl)wZXSqD zo$8mlBj=tVaQv|P?OLRo=EV}$H658;J9fUGg)EZ%x_JGfJjLV>brS{eanuT9* zwlahCp%NvzEvkd{F+Q#uBS5LmAJ1}()w2uLl#)dG{r;T=(H7f<`Ib{QYd*E;dJt*2G#F}*!_ZM?qW%)!D8%d zA6WmwG30Cz@hnMwBx~7_CeO(?K~{AUIu>6<7UqeK87FH+5PnFbz|5-S{9FUG#pWBz+y(bsD035@a0>K zyU47@fBmbKF~vSdIZVVUHg29MAJ4pAKKOt?!R)coa4fm9C71Zc%|~;1fLz;QYxKCz zM{~erHg66eqeA#xZXXy|==1(d*`haVJP*lwL|Z&yVe_~4$|r^cf92K=(zBDT7CM)0 z6O*_BaiQ7WFYTQ$9ptKtqKg{@H#zBjibUgt@~I73KOipOAE{653wPKcPltTGoMny2 zt?+xcxW%$cEt{4Y#k3pSXe-#3g5wY+)p_z;Ay4etyzrEmC*hi=KPS#5mdtR>5jW%p za4VFmhLP}2r0?$V6Z`Z3Sd3&%NkL>yUwG4eY-3Je(D|C@>%5&G)-V25GcxFK%YZfl zcJU&Nsl6b6JTe>JV(-R)%QBgEXBuF>1(x*(aUgvaN8qw}J zJV09VYQV84`fbg`Sr^r=y-Lvj$|fD$E^^;oNqOV>Czo~)=|O^NmEHcE^M`EzUNHG< zpyli7D^q%#f#2q)%)3hD=k#`-`{7Z@#|=G6mk2^9OE_B#lbE(5ccnveE$be>-oVWb zHtcRJZp~q_b>K8F+uO$OkrqQ0w!bf)Yxw!;b6}t73A9ViLT=uZWz@2tb;DL-gA{IS zHqp9a^+JP-2r)C!F`;gXGc-@8cv(ILUDbP(^{By;nBI#Lb;&ohPmf4c5nb||vskyi z3U(vcMMZlIuta+GOUjE0TY# zQ8dg4OjF&<6NqD~KchUNCxO9djGQ68S>+onG#Y%TV69vIkTZ(acz3aT*WPpW?@vz{ zAl*L+UWHTDm_rX)VRtGhH^VIuG4rthCT2#FZ-R`^n2R2Px42d7!5{dC1c&vmR04S z>EaL>`M1R1Q<6-qP|6K+T?JK(Q-+JSoM1@`?0}R4|Iq6RLT*Ek^b|g7FypQr0%dlE z)tSKY8mc9a*pqWG^XGLQ*R!sS zkfM$GaOIsfBIbU3A_Wf>;%M!ro#g5mm4B4IuJDLd_0f#`qB~m@GZRPrVQg-)vz^&m z!tXU+?*-eACyuKNWS4eYe)ZTUxTR|>mv(Idqos6vZQp#nI~>ahw&4t0w8Qo0Qp*Pf z>1(*kt`h6QansA+b#1RO{CD{ZZC)JZI3%8Oct5y-$X0Or zwY~<5!CtP9SRxX&(O-t&+rc{lrk~e#_O?}AmEhy=Kb*!op>wL^&8iBGBC^f4J1)qq zFQnMPzN}D0E~JrMZ)KFxyujOS#Vc-8y6x-B?rD?k5N@?>B*o<;e|Q-=Z*1O@CTkGw z@VWT2%a`4P%OP9#%9T7F`7#%~r(88CypL|rXW5)9&9^saf8}c|=Y9|U=iGu@y8Q0O zO<)SPl{3a?@#BIK8&3BQ$O1{5&3Pjv zeJw4`sfo9O{ykDAYsl($z^F&X@voMBUKa@5kBPL74~yGU-qUrvlHNISw$y4+;WOBUKW21MML=B>~kYs$bDa|cs!ZKYgv(2!sO zu5b~-f1NR+DRcBgeq-r!%2WHbW?Au<5>h8E~PJ0#X; zbhgdG7CWet$%h>m3E#n9$#Iw(8#jyio;etAN&++yrL1E=S7dIBzBk3UdnojhwlBf4 zg3ow+JEN92>TS_G?OsN(n|t=Y!`xc+m(`9pZdZC^>sq0FRY)AYE&MqSWqT|-$PO=5 zQd?-prZng)(pb3eFwpoYdM`FEXw0zaFmg1O#sXQr6qAxlcPA|REARI^JJf;$kN3-R z(;DJ)Pm-V7ObxHSv3Wq*T$LZ^SpS~(Lly>$TXfoo)CFFxVYB>8RO>#9?mJR4DwKCT)2ict|zR^L6wd){x zoO)0gf7QEvUB7d4!Q&faS&FnVJV2?|plk7C^ z({5Mu7$Xu`z~8`;SGdtX(tQs2bJ13nRwnJM=2b7f2gM6^BMdX?46Vj3wIlS)@ykdI z_e^ygp5kJL$5h@hGBfg&;~y1*UhtqtO03N7Gb{%5wF{{9KPcbz>KDBp^?LN*zB|Yi z@}+7aOpa9O+bJP2+@jOgx%yNgt~DM-yxLRVvr3-t7D@r z*=N`uqc&<>Uki-tn6Ye>lieIP6c{PNsy^6`)i%#qyc2zNyXU49mokdUdVE8>Jj>e9 zQ?LrZY&91cTk(18?YxiXw39ry59+NAPEx|??nE5FkTNyNaFhG|49+okPwfy}qNr2) z&d1Zbw&ceR*HFC7_a|ti$F{c!hNWnyvYXHBrmX*xes!<7h{(a(_xxo$0eu}|zNigPeoB0eeR5bd$u8Lv zyAkbhV^n`29;K#OvM75)!f5mQhPZ!>%CgY|?ma7PGa%YmE}o}dq75EOYtYzq3m(Ts8~LZCZx@3Ry;#uur}Fl~s$w1Xi*qzUaWyThnRF#0urDU9J`| z&);G)+X)%3e7dVbsti=*@7a(j!WCX3%_yjCFtz$i%{3_J1xQA7+YvpMC}LxeFW@Q* zx=VN!(k~Iz3SQUBFKbd&?{7V;{Gs}A>wDksqru80m;5TX{!%ZiKe$Jc4>@~Bq>CI( z=C*mU9h9A?Sf&{{8|-D=*UfE1vef4QfsuNZ4s%aaCYOSd(3@vY+J;UPYIZLdc56K_ zZ#|17y!Y=iDDdmwu=pl!KT5llyRoE%${(nnjhkwCicx8;?4}N2viNV*3{)*pork5* z8C3-4MLU>TCx3cxS#_Vl5w$k*lsi%dTcO`tWXIhhyRkKashr<=x> ztNHPD{oIViz;FZD9)r}{`K@min(+_0LsjP5uC=>FB$*JlquyhxBΠ+YjiugdX9h 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 Utk8c67E+j&hTfH2HCzAx1$maJ#sB~S literal 0 HcmV?d00001 diff --git a/src/backend/distributed/README.md b/src/backend/distributed/README.md index b3a02f73a..e404b08f9 100644 --- a/src/backend/distributed/README.md +++ b/src/backend/distributed/README.md @@ -1617,6 +1617,8 @@ Historically, Citus executed single shard queries via a single connection per wo To fulfill the first two requirements, the adaptive executor uses a (process-local) **pool of connections per node**, which typically starts at 1 connection, but can grow based on the runtime of the query. Queries on shard groups that were already modified are assigned to the connection that performed the modification(s), while remaining queries are assigned to the pool (to be parallelized at will). +Adaptive executor pools + **Both the pool and the session have a “pending queue” and a “ready queue”**. The pending queue is mainly used in case of replication (e.g. reference tables). In the case of reads, whether a (pending) task on placement 2 needs to run depends on whether the (ready) task on placement 1 succeeds. In case of inserts, we write to the placements in order, so the task on placement 2 runs only once placement 1 is done. **The main loop of the adaptive executor waits for IO on the overall list of connections using a WaitEventSet**. When a connection has IO events, it triggers the connection state machine logic (ConnectionStateMachine). When the connection is ready, it enters the transaction state machine logic (TransactionStateMachine) which is responsible for sending queries and processing their results. The executor is designed with state machines, and the code has an extensive comment describing the state machines, please refer there for the details