release-22.1: rowexec: improve join reader memory usage when ordering is maintained #82957
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport 1/1 commits from #82693.
/cc @cockroachdb/release
This commit improves the join reader behavior when used by lookup joins
when ordering is maintained. In that case, we have a disk-backed row
container that we can spill to disk in order to free up some memory.
Previously, we would do so only in the case when the memory error occurs
inside of the strategy but would make the query error out if the memory
reservation is denied in the span generator or in the join reader
itself. This commit makes it so that in all places where the memory
accounting is performed, we try to ask the strategy to handle the memory
reservations. This allows the join reader ordering strategy attempt
spilling looked up rows to disk in all scenarios first, before erroring
out the query.
Additionally, this commit makes it so that the memory monitor used by
that disk-backed row container doesn't hold on to any memory when the
corresponding memory account is cleared. By default, our memory monitor
can keep a margin of 100KiB in reserve, but this behavior doesn't make
sense when we're forcing the disk-backed container to use disk.
Release note: None
Release justification: low risk bug fix.