Skip to content

release-21.2: sql: change system.tenant_usage to use a single consumption column#70906

Merged
RaduBerinde merged 2 commits intocockroachdb:release-21.2from
RaduBerinde:backport21.2-70778
Sep 30, 2021
Merged

release-21.2: sql: change system.tenant_usage to use a single consumption column#70906
RaduBerinde merged 2 commits intocockroachdb:release-21.2from
RaduBerinde:backport21.2-70778

Conversation

@RaduBerinde
Copy link
Copy Markdown
Member

@RaduBerinde RaduBerinde commented Sep 30, 2021

Backport 2/2 commits from #70778.

/cc @cockroachdb/release

sql: change system.tenant_usage to use a single consumption column

There are ongoing discussions about adding more components to the RU
cost. The prospect of having to change the columns of
system.tenant_usage each time is daunting.

This commit modifies the table to use a single total_consumption
column which encodes the TenantConsumption proto. We can add fields to
the proto in the future without changing the schema.

The values are still readable via SQL using pb_to_json:

crdb_internal.pb_to_json('cockroach.roachpb.TenantConsumption', total_consumption)

Informs #68479.

Release note: None

Release justification: Necessary change for supporting changes to the
cost model for the upcoming Serverless MVP release. This functionality
is only enabled in multi-tenant scenarios and should have no impact on
our dedicated customers.

sql: add crdb_internal.tenant_usage_details

This commit adds a virtual view which decodes the tenant consumption
details. Example:

root@:26257/defaultdb> select * from crdb_internal.tenant_usage_details;
  tenant_id |     total_ru      | total_read_bytes | total_read_requests | total_write_bytes | total_write_requests | total_sql_pod_seconds
------------+-------------------+------------------+---------------------+-------------------+----------------------+------------------------
        123 | 9618.311247130436 |           751504 |                4660 |             47485 |                 1877 |     4.454030256529996

Release note: None

Release justification: Necessary change for supporting changes to the
cost model for the upcoming Serverless MVP release. This functionality
is only enabled in multi-tenant scenarios and should have no impact on
our dedicated customers.

There are ongoing discussions about adding more components to the RU
cost. The prospect of having to change the columns of
`system.tenant_usage` each time is daunting.

This commit modifies the table to use a single `total_consumption`
column which encodes the TenantConsumption proto. We can add fields to
the proto in the future without changing the schema.

The values are still readable via SQL using `pb_to_json`:
```
crdb_internal.pb_to_json('cockroach.roachpb.TenantConsumption', total_consumption)
```

Informs cockroachdb#68479.

Release note: None

Release justification: Necessary change for supporting changes to the
cost model for the upcoming Serverless MVP release. This functionality
is only enabled in multi-tenant scenarios and should have no impact on
our dedicated customers.
This commit adds a virtual view which decodes the tenant consumption
details. Example:
```
root@:26257/defaultdb> select * from crdb_internal.tenant_usage_details;
  tenant_id |     total_ru      | total_read_bytes | total_read_requests | total_write_bytes | total_write_requests | total_sql_pod_seconds
------------+-------------------+------------------+---------------------+-------------------+----------------------+------------------------
        123 | 9618.311247130436 |           751504 |                4660 |             47485 |                 1877 |     4.454030256529996
```

Release note: None

Release justification: Necessary change for supporting changes to the
cost model for the upcoming Serverless MVP release. This functionality
is only enabled in multi-tenant scenarios and should have no impact on
our dedicated customers.
@RaduBerinde RaduBerinde requested review from a team and ajwerner September 30, 2021 04:42
@RaduBerinde RaduBerinde requested review from a team as code owners September 30, 2021 04:42
@RaduBerinde RaduBerinde requested review from a team and shermanCRL and removed request for a team September 30, 2021 04:42
@blathers-crl
Copy link
Copy Markdown

blathers-crl bot commented Sep 30, 2021

Thanks for opening a backport.

Please check the backport criteria before merging:

  • Patches should only be created for serious issues.
  • Patches should not break backwards-compatibility.
  • Patches should change as little code as possible.
  • Patches should not change on-disk formats or node communication protocols.
  • Patches should not add new functionality.
  • Patches must not add, edit, or otherwise modify cluster versions; or add version gates.
If some of the basic criteria cannot be satisfied, ensure that the exceptional criteria are satisfied within.
  • There is a high priority need for the functionality that cannot wait until the next release and is difficult to address in another way.
  • The new functionality is additive-only and only runs for clusters which have specifically “opted in” to it (e.g. by a cluster setting).
  • New code is protected by a conditional check that is trivial to verify and ensures that it only runs for opt-in clusters.
  • The PM and TL on the team that owns the changed code have signed off that the change obeys the above rules.

Add a brief release justification to the body of your PR to justify this backport.

Some other things to consider:

  • What did we do to ensure that a user that doesn’t know & care about this backport, has no idea that it happened?
  • Will this work in a cluster of mixed patch versions? Did we test that?
  • If a user upgrades a patch version, uses this feature, and then downgrades, what happens?

@cockroach-teamcity
Copy link
Copy Markdown
Member

This change is Reviewable

Copy link
Copy Markdown
Contributor

@ajwerner ajwerner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm: stamp. Seems like a clean backport. Haven't read it cover-to-cover again, let me know if you want me to.

Reviewed 6 of 12 files at r1, all commit messages.
Reviewable status: :shipit: complete! 1 of 0 LGTMs obtained (waiting on @shermanCRL)

@shermanCRL shermanCRL requested review from dt and removed request for shermanCRL September 30, 2021 14:15
@RaduBerinde
Copy link
Copy Markdown
Member Author

TFTR! Yeah it was a clean backport, conflicts were only in generated code.

@RaduBerinde RaduBerinde merged commit 4e2add2 into cockroachdb:release-21.2 Sep 30, 2021
@RaduBerinde RaduBerinde deleted the backport21.2-70778 branch September 30, 2021 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants