mirror of
https://github.com/janishutz/eth-summaries.git
synced 2026-09-10 19:15:25 +02:00
[DMDB] Some remarks for SQL
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
\subsubsection{Merge Sort}
|
||||
When we sort each page on load into memory, we then have to merge all pages together, or more precisely, combine elements into pages in correct order.
|
||||
For that, we keep pointers to each pair of frames, then we first take first element of either the first or second frame, depending on which one comes first in the order,
|
||||
For that, we keep pointers to each pair of frames, then we first take the first element of either the first or second frame, depending on which one comes first in the order,
|
||||
and copy it into the empty frame. We apply the same again to fill up the empty frame (to a threshold or fully). When the frame is full, we create a second one and link it.
|
||||
|
||||
We do this for all pairs, then apply the same procedure to each sorted frame group, repeating this until we have a unified, sorted set of frames.
|
||||
|
||||
@@ -10,7 +10,7 @@ It works as follows:
|
||||
\State Read $B - 1$ pages of relation $R$, store in a heap (priority queue)
|
||||
\For{every page}
|
||||
\If{Top of heap is smaller than the end of the sorted run}
|
||||
\State Continue with next iteration
|
||||
\State Commit it to the run and continue with next iteration
|
||||
\ElsIf{No element is left in memory that is larger than last element of current sorted run}
|
||||
\State create new run
|
||||
\Else
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Two terms important here are \textit{logical selection}, which describes \bi{what} we want to select and \textit{physical selection},
|
||||
which describes \bi{how} the algorithm or procedure works that actually retrieves, or filters, the data.
|
||||
|
||||
The options include an \textit{file scan}, where we scan the entire file and thus the I/O cost is \cost{$N \div P_F$},
|
||||
The options include a \textit{file scan}, where we scan the entire file and thus the I/O cost is \cost{$N \div P_F$},
|
||||
where $N$ is the number of records in the relation and $P_F$ the number of records per page.
|
||||
Alternatively, we can use \textit{index scan}, where we use an index to retrieve the matching rows.
|
||||
The cost then of course depends on the index used and if said index can even be used to generate the resulsts needed. We will cover that in more detail now.
|
||||
The cost then of course depends on the index used and if said index can even be used to generate the results needed. We will cover that in more detail now.
|
||||
|
||||
Reference in New Issue
Block a user