sql: add skip_rbr_unique_rowid_checks storage parameter for RBR tables#161535
Draft
DrewKimball wants to merge 1 commit intocockroachdb:masterfrom
Draft
sql: add skip_rbr_unique_rowid_checks storage parameter for RBR tables#161535DrewKimball wants to merge 1 commit intocockroachdb:masterfrom
DrewKimball wants to merge 1 commit intocockroachdb:masterfrom
Conversation
Previously, REGIONAL BY ROW tables performed expensive cross-region uniqueness checks for all unique indexes and constraints, including those on columns with unique_rowid() or unordered_unique_rowid() defaults. These functions generate globally unique values with near-zero collision probability, making cross-region checks unnecessary overhead. This commit adds a new storage parameter `skip_rbr_unique_rowid_checks` that can be set on REGIONAL BY ROW tables to skip cross-region uniqueness checks for columns using unique_rowid() or unordered_unique_rowid(). The optimization applies to: - Columns with DEFAULT unique_rowid() or unordered_unique_rowid(). - Both INSERT and UPDATE operations. - Primary indexes, unique secondary indexes, and UNIQUE WITHOUT INDEX. The parameter can only be set on REGIONAL BY ROW tables and is automatically unset when changing to REGIONAL BY TABLE or GLOBAL locality. User-specified values continue to receive full uniqueness checks across regions, ensuring correctness. A notice is displayed upon setting the parameter warning not to mix user-supplied values in a column with a unique_rowid()-implied uniqueness constraint. Epic: CRDB-39721 Release note (performance improvement): Added storage parameter `skip_rbr_unique_rowid_checks` for REGIONAL BY ROW tables to skip expensive cross-region uniqueness checks on columns using unique_rowid() or unordered_unique_rowid() as the default expression. This improves performance for multi-region tables while maintaining correctness guarantees.
|
Your pull request contains more than 1000 changes. It is strongly encouraged to split big PRs into smaller chunks. 🦉 Hoot! I am a Blathers, a bot for CockroachDB. My owner is dev-inf. |
Member
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.
Previously, REGIONAL BY ROW tables performed expensive cross-region uniqueness checks for all unique indexes and constraints, including those on columns with unique_rowid() or unordered_unique_rowid() defaults. These functions generate globally unique values with near-zero collision probability, making cross-region checks unnecessary overhead.
This commit adds a new storage parameter
skip_rbr_unique_rowid_checksthat can be set on REGIONAL BY ROW tables to skip cross-region uniqueness checks for columns using unique_rowid() or unordered_unique_rowid(). The optimization applies to:The parameter can only be set on REGIONAL BY ROW tables and is automatically unset when changing to REGIONAL BY TABLE or GLOBAL locality. User-specified values continue to receive full uniqueness checks across regions, ensuring correctness. A notice is displayed upon setting the parameter warning not to mix user-supplied values in a column with a unique_rowid()-implied uniqueness constraint.
Epic: CRDB-39721
Release note (performance improvement): Added storage parameter
skip_rbr_unique_rowid_checksfor REGIONAL BY ROW tables to skip expensive cross-region uniqueness checks on columns using unique_rowid() or unordered_unique_rowid() as the default expression. This improves performance for multi-region tables while maintaining correctness guarantees.