opt: prune unnecessary check columns#56007
Merged
craig[bot] merged 1 commit intocockroachdb:masterfrom Oct 28, 2020
Merged
Conversation
Member
This commit updates the optimizer to prune synthesized `CHECK` constraint columns for `UPDATES` when columns referenced in the constraints 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 with check 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 column families. Informs cockroachdb#51526 Release note (performance improvement): Previously, all `CHECK` constraints defined on a table would be tested for every `UPDATE` to the table. 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.
957065c to
d9a906e
Compare
RaduBerinde
approved these changes
Oct 27, 2020
Member
RaduBerinde
left a comment
There was a problem hiding this comment.
Nice improvements to the TPCE plans!
Reviewable status:
complete! 1 of 0 LGTMs obtained (waiting on @RaduBerinde and @rytaft)
Contributor
Author
|
bors r=RaduBerinde |
Contributor
|
Build succeeded: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
CHECKconstraint columns for
UPDATESwhen 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
UDPATEs 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
UPDATEs that mutate a subset of columnfamilies.
Informs #51526
Release note (performance improvement): Previously, all
CHECKconstraints defined on a table would be tested for every
UPDATEto 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
CHECKconstraints.