Expand description
A fork of DD’s JoinCore::join_core
.
Currently, compute rendering knows two implementations for linear joins:
- Differential’s
JoinCore::join_core
- A Materialize fork thereof, called
mz_join_core
- Another Materialize fork thereof, called
mz_join_core_v2
mz_join_core
exists to solve a responsiveness problem with the DD implementation.
DD’s join is only able to yield between keys. When computing a large cross-join or a highly
skewed join, this can result in loss of interactivity when the join operator refuses to yield
control for multiple seconds or longer, which in turn causes degraded user experience.
mz_join_core
currently fixes the yielding issue by omitting the linear scan through times
implemented in DD’s join implementation. This leaves only the quadratic strategy for which it
is easy to implement yielding within keys.
While mz_join_core
retains responsiveness in the face of cross-joins it is also significantly
slower than DD’s join for workloads that have a large amount of edits at different times.
mz_join_core_v2
resolves this by adding support for the DD join’s linear scan through times.
For the moment, we keep all three implementations around, selectable through feature flags.
Eventually, we hope that mz_join_core_v2
proves itself sufficiently to become the only join
implementation.
Structs§
- Deferred 🔒
- Deferred join computation.
Functions§
- mz_
join_ 🔒core - Joins two arranged collections with the same key type.