opt: prune unnecessary check columns #56007
Merged
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.
This commit updates the optimizer to prune synthesized
CHECK
constraint columns for
UPDATES
when columns referenced in theconstraints are not updated. This may also allow the optimizer to no
longer fetch those referenced columns.
This should provide a performance benefit for
UDPATE
s to tables withcheck constraints. Notably, tables that have been given many column
families (in order to reduce contention) should see a significant
reduction in contention for
UPDATE
s that mutate a subset of columnfamilies.
Informs #51526
Release note (performance improvement): Previously, all
CHECK
constraints defined on a table would be tested for every
UPDATE
to thetable. Now, a check constraint will not be tested for validity when the
values of columns it references are not being updated. The referenced
columns are no longer fetchecd in cases where they were only fetched to
test
CHECK
constraints.