From e74199a38c9189290a6f76ec110685196fcce62e Mon Sep 17 00:00:00 2001 From: Yadunand Prem Date: Sun, 5 Oct 2025 19:55:56 +0800 Subject: [PATCH] cs3223: finished --- cs3223/cheatsheet.pdf | Bin 236036 -> 247761 bytes cs3223/cheatsheet.typ | 54 +++++++++++++++++++++++++++++++++++++++--- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/cs3223/cheatsheet.pdf b/cs3223/cheatsheet.pdf index 668ae8fb6500ac6368f097f62083c1c9053938d7..f9bc8e67daedfa7c30a430fbb9eaf4cb172b4123 100644 GIT binary patch delta 34866 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 OF9Zgn!}_zT%KblEoW=|Q delta 23692 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 UBnL-EBy>pOaf~7&>L)b*52v2<4gdfE diff --git a/cs3223/cheatsheet.typ b/cs3223/cheatsheet.typ index ea1d79b..e3f2728 100644 --- a/cs3223/cheatsheet.typ +++ b/cs3223/cheatsheet.typ @@ -166,6 +166,10 @@ $pi_L (R)$, [project column by list $L$ from $R$], $pi_L^* (R)$, [project with duplicates], + $b_d$, [Data records that can fit on page], + $b_i$, [Data entries that can fit on page], + $b_r$, [RIDs that can fit on page], + ) == External Merge Sort @@ -233,9 +237,12 @@ - *Conjunct*: $1>=$ terms connected by $or$ - *CNF predicate*: $1>=$ conjuncts connected by $and$ - *Covered Conjunct* - predicate $p_i$ is covered conjunct if each attribute in $p_i$ is in key $K$ or include column of Index $I$ - - $sigma_p (R), p = ("age" > 5) and ("height" = 180) and ("level" = 3), I_1 "key" = ("level", "weight", "height"$ - - $p_c = -- *Primary Conjunct* - + - $p = ("age" > 5) and ("height" = 180) and ("level" = 3)$ + - $I_1 "key" = ("level", "weight", "height")$ + - $p_c "wrt" I_1 = ("height" = 180) and ("level" = 3)$ +- *Primary Conjunct* + - $I$ matches $p$ if attributes in $p$ form prefix of $K$ and all comparison operators are equality except last + - $p_p$ is largest subset of conjuncts in $p$ such that $I$ matches $p_p$ - $sigma_p (R)$: Select rows from $R$ that satisfy predicate $p$ - Access Path: way of accessing data records / entries - *Table Scan*: Scan all data pages (Cost: $|R|$) @@ -248,3 +255,44 @@ == B+ Trees - For Index Scan + RID Lookup, many matching RIDs could refer to same page - Sort matching RIDs before performing lookup: Avoid retrieving same page + +=== Analysis +#{ +let nin = [$N_"internal"$] +let nle = [$N_"leaf"$] +let nlo = [$N_"lookup"$] +let nso = [$N_"sort"$] +let nco = [$N_"combine"$] +[ +Cost of index scan = $nin + #nle + nlo$ +- *#nin*: No of internal nodes accessed + - Height of B+ tree index + - $ "height(est)" = cases( + ceil(log_F (ceil( (||R||) / b_d))) &"if index is clustered", + ceil(log_F (ceil( (||R||) / b_i))) &"otherwise", +) $ +- *#nlo*: Data pages accessed for RID lookups + - If $I$ is covering index for $sigma_p (R), nlo = 0$ + - else $nlo = ||sigma_p_c (R)||$ + - If matching RIDs are sorted before RID lookup + - $nlo = nso + min{||sigma_p_c (R)||, |R|}$ +- *#nso*: sorting matching RIDs + - $nso = 0 "if" ceil( (||sigma_p_c (R)||) / b_r ) <= B$ (if RIDs can fit into $B$) + - $ nso = 2 ceil((||sigma_p_c (R)||) / b_r) ceil(log_(B-1) (N_0)), N_0 = ceil(ceil((||sigma_p_c (R)||) / b_r) / B) $ + - Sorting with External Merge Sort + - #nso does'nt include read IO for pass 0 as its included in #nin and #nle + - #nso does'nt incldue write IO for final merging pass as RID is used for lookup +- *#nle*: Leaf pages scanned for evaluating $sigma_p (R)$ + - $nle = ceil((||sigma_p_p (R)||)/b_d)$ if clustered + - $nle = ceil((||sigma_p_p (R)||)/b_d)$ if unclustered +- *Index Combination* +- Cost = $nin^p + nle^p + nin^q + nle^q + nco + nlo$ + - #nco: IO cost to compute join of $pi_p$ $pi_q$ + - If $min{|pi_X_p (S_p)|, |pi_X_q (S_q)|} <= B$ + - One of the join operands can fit in mem, then $nco = 0$ +== Hash based Index Scan +- Cost: $N_"dir" + N_"bucket" + nlo$ + - $N_"dir"$: no of directory pages accessed (1 if extensible hash, 0 otherwise) + - $N_"bucket"$: max no of index's primary/overflow pages accessed + - $nlo= nso + min{||sigma_p_c (R)||, |R|}$ if I is not covering index for $sigma_p (R)$ +]}