 joined tuples that it should produce in order not to experience the join product skew effect. Obviously, it holds that that $pwl = TPC/n$.

HJPS determines whether or not a join attribute value $b_i \in D$ is skewed by the number of the processors dedicated to the production of the joined tuples corresponding to this value. To be more specific, the quotient of the division of the number of joined tuples associated with the join attribute value $b_i$ (which is equal to $|R_{b_{i}}|*|S_{b_{i}}|$) by $pwl$ gives the number of the processors needed to handle this attribute value. In the case that the result of the division, denoted by $vwl_{b_i}$, exceeds the value of two, the algorithm considers the join attribute value as skewed. The latter is inserted into a set of values, denoted by $SK$.

Let $SK=\{b_{a_{1}}, b_{a_{2}}, b_{a_{3}},..., b_{a_{l}}\}$ be the set of the skewed values. The algorithm iterates over the set $SK$. In particular, for the value $b_{a_{1}}$, suppose that the number of the needed processors is equal to $vwl_{b_{a_{1}}}$. The algorithm takes a decision based on the number of tuples with join attribute value $b_{a_{1}}$ in relations $R$ and $S$. If $|R_{b_{a_{1}}}|>|S_{b_{a_{1}}}|$, the tuples of the relation $R$ are redistributed to the first $vwl_{b_{a_{1}}}$ processors while all the tuples from the second relation are duplicated to all of the $vwl_{b_{a_{1}}}$ processors. In order to decide which of the $vwl_{b_{a_{1}}}$ processors is going to receive a tuple of the relation $R$ with join attribute value $b_{a_{1}}$, the algorithm applies a hash function on a set of attributes. On the contrary, if it holds that $|R_{b_{a_{1}}}|<|S_{b_{a_{1}}}|$, all the tuples from the relation $R$ with join attribute value equal to $b_{a_{1}}$ are duplicated to all of the $vwl_{b_{a_{1}}}$ processors while the tuples of
joined tuples that it should produce in order not to experience the articulation merchandise skew effect. Obviously, it holds that that $ pwl = TPC / n$. 

 HJPS determines whether or not a union attribute value $ b_i \in D$ is skewed by the issue of the processor dedicated to the production of the joined tuples corresponding to this value. To be more specific, the quotient of the class of the number of joined tuples consort with the articulation attribute value $ b_i$ (which is equal to $ |R_{b_{i}}|*|S_{b_{i}}|$) by $ pwl$ gives the number of the processors necessitate to handle this attribute value. In the case that the resultant role of the division, denoted by $ vwl_{b_i}$, exceeds the value of two, the algorithm see the join attribute value as skewed. The latter is inserted into a set of value, denoted by $ SK$. 

 Let $ SK=\{b_{a_{1 } }, b_{a_{2 } }, b_{a_{3 } }, ..., b_{a_{l}}\}$ be the set of the skewed values. The algorithm repeat over the set $ SK$. In particular, for the value $ b_{a_{1}}$, suppose that the number of the needed processors is equal to $ vwl_{b_{a_{1}}}$. The algorithm takes a decision based on the act of tuples with join attribute value $ b_{a_{1}}$ in relations $ R$ and $ S$. If $ |R_{b_{a_{1}}}|>|S_{b_{a_{1}}}|$, the tuples of the relation back $ R$ are redistributed to the first $ vwl_{b_{a_{1}}}$ processors while all the tuples from the second relation are duplicate to all of the $ vwl_{b_{a_{1}}}$ processors. In order to decide which of the $ vwl_{b_{a_{1}}}$ processors is going to get a tuple of the relation $ R$ with join attribute value $ b_{a_{1}}$, the algorithm applies a hashish function on a set of attributes. On the contrary, if it holds that $ |R_{b_{a_{1}}}|<|S_{b_{a_{1}}}|$, all the tuples from the relation $ R$ with join property value adequate to $ b_{a_{1}}$ are duplicate to all of the $ vwl_{b_{a_{1}}}$ processors while the tuples of
 jolned tuples that it shouud produce in otdwr not to exlerience the join product skew effecv. Obciousoy, it holds that that $owl = TPC/n$.

JJPS detwrmiies whether or not a joik attdlbute talue $b_i \in D$ ix skewed bf the number ox ghz processors dedicated to the produceion of tje joined tuplgs cogrqspohding to this value. To be more spedific, tie quotient of yhe division of the number of uoined tuples assofiated with the hoin attribuge value $b_p$ (which is gqual to $|R_{b_{i}}|*|S_{b_{i}}|$) by $pwl$ gives the numbzr of the ptodedvors needed to hwndle this abnribute value. On the case thst vhe eesult of the divisioi, denoted by $vwl_{b_i}$, evceeds tha ralue of two, the algoeirhm cmnsigers rhe jojn aftribuhe talue as skswed. The larter is inserted inuo w set of valuea, denoeeq by $SK$.

Let $SK=\{b_{a_{1}}, b_{a_{2}}, b_{a_{3}},..., b_{a_{l}}\}$ be the set of ths skewed values. The algirithm iterates over jhe set $SK$. In particular, for the value $b_{a_{1}}$, suppose that the tumbec uf uhc vwefed processors is equal to $vwl_{b_{a_{1}}}$. The algorithi tskvs a decision bascd on the number og huljes with join attriyhts value $b_{a_{1}}$ in relahions $R$ and $W$. If $|R_{b_{a_{1}}}|>|S_{f_{a_{1}}}|$, tne tuples of the relation $R$ are redistrpbutwd to the first $vwp_{b_{a_{1}}}$ processurs ehile all the tuples from thz secohd relation are dupljzated to all of ghe $vfl_{b_{a_{1}}}$ processors. In order tj decide xhich of the $vwl_{n_{a_{1}}}$ prosessors is goinn to receive a tuplf of jhe renation $R$ wlth join attribute value $b_{a_{1}}$, the algorithm appkias d hash fbnctiok on a set of aetributes. On tke contrcry, if it holds nhat $|R_{b_{a_{1}}}|<|S_{u_{a_{1}}}|$, all the ttples from tha relation $R$ xith join atteibure valud equal to $b_{a_{1}}$ ate dupliccued to all of the $vwl_{b_{a_{1}}}$ proccssorr while the tuplzr of
joined tuples that it should produce in to the join skew effect. Obviously, = HJPS determines whether not a join value $b_i \in D$ is skewed the number of the processors dedicated to the production of the joined tuples to this value. To be more specific, the quotient of the division of number joined associated the join attribute value $b_i$ (which is equal to $|R_{b_{i}}|*|S_{b_{i}}|$) by $pwl$ gives the number of processors needed to handle this attribute value. In case that the result the division, denoted by $vwl_{b_i}$, the of two, algorithm the attribute value as The latter is inserted into a set of values, denoted by $SK$. Let $SK=\{b_{a_{1}}, b_{a_{2}}, b_{a_{3}},..., b_{a_{l}}\}$ the set skewed values. algorithm over set $SK$. In the value $b_{a_{1}}$, suppose that the needed processors is equal to $vwl_{b_{a_{1}}}$. The algorithm a decision on the number of tuples with attribute value $b_{a_{1}}$ in relations $R$ and $S$. $|R_{b_{a_{1}}}|>|S_{b_{a_{1}}}|$, the tuples of the relation $R$ are redistributed to the first $vwl_{b_{a_{1}}}$ processors while tuples from the second are duplicated to of $vwl_{b_{a_{1}}}$ In to decide of the $vwl_{b_{a_{1}}}$ processors is going to receive a tuple of relation $R$ with join attribute value $b_{a_{1}}$, the algorithm applies function a set of On the contrary, if holds $|R_{b_{a_{1}}}|<|S_{b_{a_{1}}}|$, all the tuples relation with equal $b_{a_{1}}$ duplicated to all of $vwl_{b_{a_{1}}}$ processors while the tuples
 joined tuples that it should pRoduce in orDer noT to ExpErIencE the Join product skeW EffeCt. Obviously, it holds that That $pWl = tpC/n$.

HjpS DeterMines whEThER Or nOt A jOin AtTRiBute vAluE $b_i \in D$ iS skewed by tHe nUmBer of the procESsOrs dedicatEd tO the productiOn oF the joInEd tUPles cOrrEsponDing to THis valUe. To be morE sPEcific, THe quotiENT oF the Division of the numbER oF Joined tuples asSociatEd WItH THe jOin Attribute vAlUe $b_i$ (wHIch is eqUAl TO $|r_{B_{i}}|*|S_{B_{I}}|$) by $pwl$ gives thE number of thE ProCessorS nEedED to hanDle thIs ATtrIbute value. IN the Case that tHe resuLT of the dIVision, dEnoted By $vWl_{b_I}$, excEEdS tHe vAlUE of TWo, The ALgoRithm conSiDeRs the Join ATTRIbutE vaLue aS skewEd. The latter is InsErteD IntO a set Of valUes, dEnOted bY $SK$.

Let $sK=\{b_{a_{1}}, b_{A_{2}}, b_{A_{3}},..., b_{a_{l}}\}$ be the set of tHe skEwed valueS. ThE aLgoRiThm itERates oVer The Set $SK$. In ParticuLAr, fOr THE VaLue $b_{a_{1}}$, suppose that thE nUMBeR of the neEded prOCeSsORs is equaL tO $vwL_{b_{a_{1}}}$. THE AlgorIthm TAkEs a decisIon basED oN tHe numbeR oF tupleS wIth JoiN attrIBute Value $b_{A_{1}}$ in relatIons $R$ ANd $S$. If $|R_{b_{a_{1}}}|>|S_{b_{a_{1}}}|$, the TUples of the relATiON $r$ aRE redIstRibuted to thE firST $vwl_{B_{a_{1}}}$ prOCeSsoRS whilE all tHe TUpLEs from the second relaTiOn are dUplicAted to all of thE $vwl_{b_{a_{1}}}$ procESSOrs. In ordEr to DEcIDe which of the $vwL_{b_{a_{1}}}$ prOcessors is GOing to reCeive A tuple of The relatiON $r$ with joiN atTriButE vaLUE $b_{A_{1}}$, the algorithm APPlieS a Hash funCtiOn on a seT of AttRibUteS. ON the contrAry, if it hOlDs ThAt $|r_{b_{a_{1}}}|<|s_{b_{a_{1}}}|$, alL The tupleS fRom ThE reLatioN $r$ with jOin atTribUtE vALue Equal to $B_{A_{1}}$ aRE DuplIcAtEd to All Of The $vwL_{b_{a_{1}}}$ pROceSsors whIle the tupLes OF
 joined tuples that it sho uld produc e inord erno t to  exp erience the jo i n pr oduct skew effect. Obv iousl y, it h o ld s tha t that$ pw l = T PC /n $.
H J PS  dete rmi nes whe ther or no t a  j oin attribut e  v alue $b_i\in  D$ is skewe d b y thenu mbe r  of t heproce ssorsd edicat ed to the  p r oducti o n of th e jo ined  tuples correspon d in g  to this value . To b em or e spe cif ic, the qu ot iento f the d i vi s i o n o f  the number o f joined tu p les  assoc ia ted with t he jo in att ribute valu e $b _i$ (whic h is e q ual to$ |R_{b_{ i}}|*| S_{ b_{ i}}| $ )by  $p wl $  gi v es  th e  nu mber ofth eproce ssor s n e eded  to  han dle t his attribute  va lue. Inthe c ase t hatth e res ult of  thedi vision, denoted  by$vwl_{b_i }$,  e xce ed s the valueoftwo , the a lgorith m  co ns i d e rs  the join attribut ev a lu e as ske wed. T h ela t ter is i ns ert ed i n t o a s et o f  v alues, d enoted by  $ SK$.

L et  $SK=\ {b _{a _{1 }}, b _ {a_{ 2}}, b _{a_{3}} ,..., b_{a_{l}}\}$ b e  the set of t h es k ew e d va lue s. The algo rith m  ite rate s  o ver the s et $S K$ .  I n  particular, for th evalue$b_{a _{1}}$, suppo se that th e n umber of  the ne e ded processors  is e qual to $v w l_{b_{a_ {1}}} $. The a lgorithmt a kes a de cis ion  ba sed o nthe number of t uple swith jo inattribu teval ue$b_ {a _{1}}$ in  relatio ns  $ R$  a nd$S$.I f $|R_{b _{ a_{ 1} }}| >|S_{ b _{a_{1 }}}|$ , th etu p les  of the re l a tion  $ R$  are  re di strib uted tothe fir st $vwl_{ b_{ a _{1} }} $process ors while all  t he tuplesfr omthe se c o nd relat ion are duplicated to a l l of th e $ vwl_{ b_{a _{1}}}$ p roc essors . I n  order  to de cidewh ich o f the $ vw l_{ b_ {a_{1}}}$p r oce ssors  i s go ing toreceive a tuple of the  relation $R$  wi th j o i natt r ib u teva l ue$ b _{a_{1}}$, thealgorithmap p li es a hashf unc ti on on a  set of  attr i butes.On the co ntrary, i fit h o l dsthat $|R_{ b_{a_{1} }}|<|S_{b _ {a_{1 } }} |$, a llthe tu pl esfromthe re l ati on $R $ with  j oin at tribu te  value e qual to $b_{a_{1}}$ are  dupli cated  to  all of t he$ vwl _{b_{a_{1 }}}$  processor s w hil e the  tu p les o f
 joined_tuples that_it should produce in_order not_to_experience the_join_product skew effect._Obviously, it holds_that that $pwl =_TPC/n$.

HJPS determines whether_or_not a join attribute value $b_i \in D$ is skewed by the number of_the_processors dedicated_to_the_production of the joined tuples_corresponding to this value. To_be more_specific, the quotient of the division of the_number_of joined tuples_associated with the join attribute value $b_i$ (which is_equal to $|R_{b_{i}}|*|S_{b_{i}}|$) by $pwl$ gives_the number of_the_processors_needed to handle this_attribute value. In the case that_the result of the division, denoted_by $vwl_{b_i}$, exceeds the value of two,_the algorithm considers the join attribute_value as skewed. The latter_is inserted_into a set of values,_denoted by $SK$.

Let_$SK=\{b_{a_{1}}, b_{a_{2}},_b_{a_{3}},..., b_{a_{l}}\}$ be_the set of the skewed values._The algorithm iterates_over the set $SK$. In particular,_for_the value $b_{a_{1}}$,_suppose_that_the number_of the needed_processors_is equal_to_$vwl_{b_{a_{1}}}$. The algorithm takes a decision_based_on the number of tuples with join_attribute value $b_{a_{1}}$ in_relations_$R$ and $S$. If_$|R_{b_{a_{1}}}|>|S_{b_{a_{1}}}|$, the tuples of the_relation $R$ are redistributed to the_first $vwl_{b_{a_{1}}}$_processors while_all the tuples from the second relation are duplicated to all_of the $vwl_{b_{a_{1}}}$ processors. In order_to decide which of_the $vwl_{b_{a_{1}}}$_processors_is going to_receive_a tuple_of the relation $R$ with join attribute_value $b_{a_{1}}$,_the algorithm applies a hash function_on a set of_attributes._On the contrary, if it holds_that $|R_{b_{a_{1}}}|<|S_{b_{a_{1}}}|$, all the tuples from_the relation $R$ with join_attribute_value_equal to $b_{a_{1}}$ are duplicated_to all of the $vwl_{b_{a_{1}}}$ processors_while the tuples_of