Skip to content
Snippets Groups Projects
This project is mirrored from https://github.com/cockroachdb/cockroach. Pull mirroring updated .
  1. Feb 28, 2023
    • craig[bot]'s avatar
      Merge #97419 · e828ba02
      craig[bot] authored
      97419: ui: add missing props to storybook files r=ericharmeling a=ericharmeling
      
      This commit adds missing props to storybook files in cluster-ui. These missing props are causing the publish_cluster_ui GH action to fail. See https://github.com/cockroachdb/cockroach/actions/runs/4236959074/jobs/7362369310
      
      .
      
      Interestingly, these missing props weren't caught by any essential CI tests...
      
      Epic: none
      
      Release note: None
      
      Co-authored-by: default avatarEric Harmeling <eric.harmeling@cockroachlabs.com>
    • craig[bot]'s avatar
      Merge #97769 · fb6eb66a
      craig[bot] authored
      
      97769: sql/schemachanger: version gate dropping constraints / functions r=fqazi a=fqazi
      
      Previously, it was possible in a mixed version state to cleanup constraints (foreign keys, unique without indexes, function bodies) when dropping columns. This would cause down level nodes to fail at planning seeing unsupported status transitions. To address this, this patch adds a version gate to prevent dropping any of these objects when cleaning up a column.
      
      Fixes: #97576
      
      Release note: None
      
      Co-authored-by: default avatarFaizan Qazi <faizan@cockroachlabs.com>
      fb6eb66a
    • craig[bot]'s avatar
      Merge #92966 · 3ed2c8fc
      craig[bot] authored
      92966: builtins: add to_tsvector {phrase,plain,}to_tsquery r=jordanlewis a=jordanlewis
      
      Updates: https://github.com/cockroachdb/cockroach/issues/41288
      
      
      Epic: CRDB-22357
      
      Release note (sql change): add the to_tsvector, to_tsquery, phraseto_tsquery, and plainto_tsquery builtins which parse input documents into tsvectors and tsqueries respectively.
      
      Co-authored-by: default avatarJordan Lewis <jordanthelewis@gmail.com>
      3ed2c8fc
    • craig[bot]'s avatar
      Merge #97696 · b08d7050
      craig[bot] authored
      
      97696: opt: split disjunction in join conditions in more cases r=rytaft a=rytaft
      
      **sql: add session setting `optimizer_use_improved_split_disjunction_for_joins`**
      
      This commit adds a new session setting,
      `optimizer_use_improved_split_disjunction_for_joins`, which will be used in
      the next commit.
      
      Release note (sql change): added a new session setting,
      `optimizer_use_improved_split_disjunction_for_joins`, which enables the
      optimizer to split disjunctions (`OR` expressions) in more cases in join
      conditions by building a `UNION` of two join expressions. If this setting
      is true, all disjunctions in inner, semi, and anti joins will be split.
      If false, only disjunctions potentially containing an equijoin condition
      will be split.
      
      **opt: split disjunction in join conditions in more cases**
      
      Prior to this commit, when a join condition included a disjunction
      (e.g. `a OR b`), in some cases we could remove the disjunction by splitting
      the join into a `UNION` of joins to create a more efficient plan. However,
      we were only performing this transformation if at least one side of the `OR`
      predicate contained an equijoin predicate (e.g., `t1.col1 = t2.col1`). There
      were other cases where we could have improved the plan by splitting the
      disjunction, but we did not do so.
      
      This commit improves our ability to optimize joins with disjunctions in
      the join condition when there is the possibility to push one or both sides
      of the disjunction below the join. This commit removes the requirement that
      the disjunction contains an equijoin predicate, and instead splits the
      disjunction in all cases where it is possible to do so, thus enabling
      more optimization opportunities.
      
      Fixes #97695
      
      Release note (performance improvement): if the session setting
      `optimizer_use_improved_split_disjunction_for_joins` is true, the optimizer
      now creates a better query plan in some cases where an inner, semi, or
      anti join contains a join predicate with a disjuction (`OR` condition).
      
      
      Co-authored-by: default avatarRebecca Taft <becca@cockroachlabs.com>
      b08d7050
    • craig[bot]'s avatar
      Merge #97748 · cfe009c9
      craig[bot] authored
      
      97748: sql/schemachanger/scbuild: properly rewrite exprs in partial predicates r=ajwerner a=ajwerner
      
      Before this change we were throwing away some standard rewriting we want to do to table expressions for the case of partial index predicates. This resulted in badness when attempting to backfill the index.
      
      No release note because this feature is new in 23.1
      
      Fixes: #97551
      
      Release note: None
      
      Co-authored-by: default avatarajwerner <awerner32@gmail.com>
      cfe009c9
    • Faizan Qazi's avatar
      sql/schemachanger: version gate dropping constraints / functions · 626483ae
      Faizan Qazi authored
      Previously, it was possible in a mixed version state
      to cleanup constraints (foreign keys, unique without indexes,
      function bodies) when dropping columns. This would cause
      down level nodes to fail at planning seeing unsupported
      status transitions. To address this, this patch adds a version gate
      to prevent dropping any of these objects when cleaning up a column.
      
      Fixes: #97576
      
      Release note: None
      626483ae
    • ajwerner's avatar
      sql/schemachanger/scbuild: properly rewrite exprs in partial predicates · 71924164
      ajwerner authored
      Before this change we were throwing away some standard rewriting we want
      to do to table expressions for the case of partial index predicates. This
      resulted in badness when attempting to backfill the index.
      
      No release note because this feature is new in 23.1
      
      Fixes: #97551
      
      Release note: None
      71924164
    • Rebecca Taft's avatar
      opt: split disjunction in join conditions in more cases · 554b1ddc
      Rebecca Taft authored
      Prior to this commit, when a join condition included a disjunction
      (e.g. a OR b), in some cases we could remove the disjunction by splitting
      the join into a UNION of joins to create a more efficient plan. However,
      we were only performing this transformation if at least one side of the OR
      predicate contained an equijoin predicate (e.g., t1.col1 = t2.col1). There
      were other cases where we could have improved the plan by splitting the
      disjunction, but we did not do so.
      
      This commit improves our ability to optimize joins with disjunctions in
      the join condition when there is the possibility to push one or both sides
      of the disjunction below the join. This commit removes the requirement that
      the disjunction contains an equijoin predicate, and instead splits the
      disjunction in all cases where it is possible to do so, thus enabling
      more optimization opportunities.
      
      Fixes #97695
      
      Release note (performance improvement): if the session setting
      optimizer_use_improved_split_disjunction_for_joins is true, the optimizer
      now creates a better query plan in some cases where an inner, semi, or
      anti join contains a join predicate with a disjuction (OR condition).
      554b1ddc
    • Rebecca Taft's avatar
      sql: add session setting optimizer_use_improved_split_disjunction_for_joins · 88709d8d
      Rebecca Taft authored
      This commit adds a new session setting,
      optimizer_use_improved_split_disjunction_for_joins, which will be used in
      the next commit.
      
      Release note (sql change): added a new session setting,
      optimizer_use_improved_split_disjunction_for_joins, which enables the
      optimizer to split disjunctions (OR expressions) in more cases in join
      conditions by building a UNION of two join expressions. If this setting
      is true, all disjunctions in inner, semi, and anti joins will be split.
      If false, only disjunctions potentially containing an equijoin condition
      will be split.
      88709d8d
    • craig[bot]'s avatar
      Merge #97631 · 46b1afac
      craig[bot] authored
      
      97631: sql: create new slice when removing backreference items r=chengxiong-ruan a=chengxiong-ruan
      
      Fixes: #97546
      Fixes: #96368
      
      Previously we reused the underlying slots of the `DependedOnBy` slice when removing items from it. This is problematic because we normally have to iterate the same slice to figure out what to drop. Iterating on a slice which is rewritten can be problematic unless we always know how to smartly move the cursor backward. This commit changes it to just create a new slice to avoid the hazzard.
      
      Release note: None.
      
      Co-authored-by: default avatarChengxiong Ruan <chengxiongruan@gmail.com>
      46b1afac
    • craig[bot]'s avatar
      Merge #97775 · b0e5507f
      craig[bot] authored
      
      97775: execbuilder: de-flake a recently introduced test r=yuzefovich a=yuzefovich
      
      I'm not able to reproduce the flake under stress, but for some reason it appears that the stats on a system table are collected even though we disable the auto stats collection. Those stats rarely show a different `estimated row count`, so this commit skips that line from the output of the EXPLAIN. This is acceptable given the goal of the test is ensuring that a secondary index is used for the scan.
      
      Fixes: #97771.
      
      Release note: None
      
      Co-authored-by: default avatarYahor Yuzefovich <yahor@cockroachlabs.com>
      b0e5507f
    • Chengxiong Ruan's avatar
      sql: create new slice when removing backreference items · 2e05878b
      Chengxiong Ruan authored
      Fixes: #97546
      Fixes: #96368
      
      We are reusing the underlying slots of the `DependedOnBy`
      slice when removing items from it. This is problematic because
      we normally have to iterate the same slice to figure out what
      to drop. Iterating on a slice which is rewritten can be problematic
      unless we always know how to smartly move the cursor backward.
      This commit remove such kind of hazard by collecting descriptor
      IDs to drop before actually dropping everything.
      
      Releaste note (sql change): This commit fixes two bugs prevent
      users from doing `DROP COLUMN CASCADE` and `DROP INDEX CASCADE`
      when dependecies on the Table from Views and Functions get complex.
      They all happened When a table is referenced multiple times in
      more than one Views and Functions.
      
      Release note: None.
      2e05878b
    • craig[bot]'s avatar
      Merge #97760 · 227aad06
      craig[bot] authored
      
      97760: sql: remove CREATE FUNCTION 22.2 version gate r=chengxiong-ruan a=chengxiong-ruan
      
      Informs: #96763, #96751
      
      Release note: None.
      
      Co-authored-by: default avatarChengxiong Ruan <chengxiongruan@gmail.com>
      227aad06
    • Yahor Yuzefovich's avatar
      execbuilder: de-flake a recently introduced test · 39cc2c17
      Yahor Yuzefovich authored
      I'm not able to reproduce the flake under stress, but for some reason it
      appears that the stats on a system table are collected even though we
      disable the auto stats collection. Those stats rarely show a different
      `estimated row count`, so this commit skips that line from the output of
      the EXPLAIN. This is acceptable given the goal of the test is ensuring
      that a secondary index is used for the scan.
      
      Release note: None
      39cc2c17
    • craig[bot]'s avatar
      Merge #97750 · 5f34f44d
      craig[bot] authored
      97750: colexec: fix incorrect accounting when resetting datum-backed vectors r=yuzefovich a=yuzefovich
      
      This commit reverts a couple of other commits:
      - "colexec: fix a "fake" memory accounting leak for intra-query period"
      (https://github.com/cockroachdb/cockroach/commit/72e83fee28f790420c2c96a707ee88eed58618fa)
      - "colexec: deeply reset datum-backed vectors in ResetInternalBatch"
      (https://github.com/cockroachdb/cockroach/commit/cb93c302de1bab49c8b3051ad96cf859bd91036f
      
      )
      
      since they introduced incorrect memory accounting for the datum-backed
      vectors.
      
      Those two commits together solved another issue where we would keep
      no-longer-needed datums live for longer than necessary (until they are
      overwritten in the datum-backed vector) by eagerly nil-ing them out when
      resetting the whole batch. This required introducing some careful
      adjustment to the memory accounting in order to keep the accounting up
      to date. However, that logic turned out to be faulty; in particular, it
      became possible to register the allocations of the datum-backed vectors
      with one account but then attempt to release some of those allocations
      from another. If those releases happen enough times, it'd put the
      account in debt which would trigger an internal error (or a crash in
      test builds).
      
      Such a scenario can occur because we have a couple of utility operators
      that append a vector to a batch owned by another operator. When that
      other operator resets its batch, the appended-by-utility-operator
      vector is also reset, and the memory usage of the freed datum would be
      deregistered from the wrong account. Tracking precisely which vector is
      owned by the owner of the batch vs appended by another operator can be
      cumbersome and error-prone, so this commit instead of introducing this
      tracking removes the resetting behavior of the datum-backed vectors.
      This should be bullet-proof while only increasing slightly the amount of
      time references to datums are kept live.
      
      Fixes: #97603.
      
      Release note (bug fix): CockroachDB could previously encounter an
      internal error "no bytes in account to release ..." in rare cases and
      this is now fixed. The bug was introduced in 22.1.
      
      Co-authored-by: default avatarYahor Yuzefovich <yahor@cockroachlabs.com>
      5f34f44d
    • Yahor Yuzefovich's avatar
      colexec: fix incorrect accounting when resetting datum-backed vectors · f2dd52cc
      Yahor Yuzefovich authored
      This commit reverts a couple of other commits:
      - "colexec: fix a "fake" memory accounting leak for intra-query period"
      (72e83fee)
      - "colexec: deeply reset datum-backed vectors in ResetInternalBatch"
      (cb93c302)
      
      since they introduced incorrect memory accounting for the datum-backed
      vectors.
      
      Those two commits together solved another issue where we would keep
      no-longer-needed datums live for longer than necessary (until they are
      overwritten in the datum-backed vector) by eagerly nil-ing them out when
      resetting the whole batch. This required introducing some careful
      adjustment to the memory accounting in order to keep the accounting up
      to date. However, that logic turned out to be faulty; in particular, it
      became possible to register the allocations of the datum-backed vectors
      with one account but then attempt to release some of those allocations
      from another. If those releases happen enough times, it'd put the
      account in debt which would trigger an internal error (or a crash in
      test builds).
      
      Such a scenario can occur because we have a couple of utility operators
      that append a vector to a batch owned by another operator. When that
      other operator resets its batch, the appended-by-utility-operator
      vector is also reset, and the memory usage of the freed datum would be
      deregistered from the wrong account. Tracking precisely which vector is
      owned by the owner of the batch vs appended by another operator can be
      cumbersome and error-prone, so this commit instead of introducing this
      tracking removes the resetting behavior of the datum-backed vectors.
      This should be bullet-proof while only increasing slightly the amount of
      time references to datums are kept live.
      
      Release note (bug fix): CockroachDB could previously encounter an
      internal error "no bytes in account to release ..." in rare cases and
      this is now fixed. The bug was introduced in 22.1.
      f2dd52cc
    • craig[bot]'s avatar
      Merge #97213 · 528cd197
      craig[bot] authored
      
      97213: cli: add debug command for declarative schema changer rules r=fqazi a=fqazi
      
      Previously, we had no way of dumping out the supported declarative schema changer rules on a given cockroach binary. This was inadequate because to support mixed version states we need to maintain the current and previous set of rules, but have no way of asserting the two are equivalent. This patch adds a debug command that will enable us to add this type of comparison using a future roachtest.
      
      Epic: none
      Release note: None
      
      Co-authored-by: default avatarFaizan Qazi <faizan@cockroachlabs.com>
      528cd197
    • Faizan Qazi's avatar
      cli: add debug command for declarative schema changer rules · da8d12f4
      Faizan Qazi authored
      Previously, we had no way of dumping out the supported
      declarative schema changer rules on a given cockroach
      binary. This was inadequate because to support mixed version
      states we need to maintain the current and previous set of
      rules, but have no way of asserting the two are equivalent.
      This patch adds a debug command that will enable us to
      add this type of comparison using a future roachtest.
      
      Epic: none
      Release note: None
      da8d12f4
  2. Feb 27, 2023
    • craig[bot]'s avatar
      Merge #96407 · 6845816b
      craig[bot] authored
      
      96407: streamingest: allow changing the cutover time in ALTER TENANT r=lidorcarmel a=lidorcarmel
      
      Currently the cutover timestamp cannot be updated, even if it was set to be far in the future.
      
      This commit allows updating the cutover timestamp as long as the cutover process did not start.
      
      Fixes: #95899
      Epic: CRDB-18752
      
      Release note: None
      
      Co-authored-by: default avatarLidor Carmel <lidor@cockroachlabs.com>
      6845816b
    • Lidor Carmel's avatar
      streamingest: allow changing the cutover time in ALTER TENANT · 089cdf7c
      Lidor Carmel authored
      Currently the cutover timestamp cannot be updated, even if it
      was set to be far in the future.
      
      This commit allows updating the cutover timestamp as long as
      the cutover process did not start.
      
      Fixes: #95899
      Epic: CRDB-18752
      
      Release note: None
      089cdf7c
    • craig[bot]'s avatar
      Merge #97466 · 5d0c6ee6
      craig[bot] authored
      
      97466: c2c: set replication_lag metric to 0 before high water mark is set r=stevendanna a=msbutler
      
      Fixes #97224
      
      Release note: None
      
      Co-authored-by: default avatarMichael Butler <butler@cockroachlabs.com>
      5d0c6ee6
    • craig[bot]'s avatar
      Merge #97465 #97505 · f1a4c63d
      craig[bot] authored
      97465: c2c: gather perf metrics from prometheus r=stevendanna a=msbutler
      
      c2c roachtest performance metrics are now gathered by a prom/grafana instance running locally on the roachprod cluster. This change allows us to gather and process any metrics exposed to the crdb prom endpoint. Specifically, we now gather: `capacity_used`, `replication_logical_bytes`, `replication_sst_bytes` at various points during the c2c roachtest, allowing us to measure:
      - Initial Scan Throughput: initial scan size / initial scan duration
      - Workload Throughput: data ingested during workload / workload duration
      - Cutover Throughput: (data ingested between cutover time and cutover cmd) / (cutover process duration)
      
      where the size of these operations can be measured as either physical replicated bytes, logical ingested bytes, or physical ingested bytes on the source cluster.
      
      This patch also fixes a recent bug which mislabeled src cluster throughput as initial scan throughput.
      
      Informs #89176
      
      Release note: None
      
      97505: server, ui: remove interpreted jobs retrying status  r=xinhaoz a=xinhaoz
      
      This commit removes the 'Retrying' status from the jobs UX.
      Previously, we were interpolating this status from the running
      status. This just added confusion and incorectness to the status
      of the job being displayed. The status being surfaced now aligns
      directly with what is shown in the `crdb_internal.jobs` table.
      
      Some missing job statuses were also added as request options to
      the 'Status' dropdown, including:
      - Pause Requested
      - Cancel Requested
      - Revert Failed
      
      Fixes: https://github.com/cockroachdb/cockroach/issues/95712
      
      Release note (ui change): Retrying is no longer a status shown
      in the jobs page.
      
      <img width="1326" alt="image" src="https://user-images.githubusercontent.com/20136951/220738075-733b0cc8-9f77-4ace-a944-3791ff159c62.png
      
      ">
      
      
      Co-authored-by: default avatarMichael Butler <butler@cockroachlabs.com>
      Co-authored-by: default avatarXin Hao Zhang <xzhang@cockroachlabs.com>
      f1a4c63d
    • Chengxiong Ruan's avatar
      sql: remove CREATE FUNCTION 22.2 version gate · 0d6452ee
      Chengxiong Ruan authored
      Informs: #96763, #96751
      
      Release note: None.
      0d6452ee
    • craig[bot]'s avatar
      Merge #97532 #97634 · 46120ffd
      craig[bot] authored
      
      97532: storepool: consider stores suspect on join r=kvoli a=andrewbaptist
      
      Previously, stores would not be considered suspect when joining the cluster. This patch updates logic so that stores are now considered suspect on joining the cluster (rejoining or startup).
      
      Release note (ops change): Stores will now be considered suspect when joining the cluster.
      
      Epic: none
      
      97634: sql: dedupe on search path schema when resolving functions r=chengxiong-ruan a=chengxiong-ruan
      
      Fixes: #97130
      Previously, if there are duplicate schemas in current searcth path function resolution would fail due to ambiguity because a UDF was seen twice. This commit adds logic to dedupe on the search path schema.
      
      Release note: None
      
      Co-authored-by: default avatarAndrew Baptist <baptist@cockroachlabs.com>
      Co-authored-by: default avatarChengxiong Ruan <chengxiongruan@gmail.com>
      46120ffd
    • Chengxiong Ruan's avatar
      sql: dedupe on search path schema when resolving functions · 0eecdb7a
      Chengxiong Ruan authored
      Previously, if there are duplicate schemas in current searcth
      path function resolution would fail due to ambiguity because
      a UDF was seen twice.
      
      This commit adds an extra field to `SearchPath` and `SearchPathIter`
      so that we can dedupe while iterate through schemas on paths.
      
      Release note: None
      0eecdb7a
    • craig[bot]'s avatar
      Merge #97579 #97708 · 7a3778b0
      craig[bot] authored
      
      97579: schemachanger: Support dropping column with referenced constraints r=Xiang-Gu a=Xiang-Gu
      
      This PR enables dropping columns with referenced constraints in the declarative schema changer.
      
      As a prerequisite step, we also added support to dropping a UWI constraint when there is a dependent
      FK constraint in both the legacy and declarative schema changer (commit 2).
      
      Commit 2 Fixes: #96787, Fixes: #97538
      Commit 3 Fixes: #96727
      
      Epic: None
      
      97708: backupccl: move vmodule read out of loop r=dt a=dt
      
      Spotted in profiling by `@lidorcarmel.`
      
      Release note: none.
      Epic: none.
      
      Co-authored-by: default avatarXiang Gu <xiang@cockroachlabs.com>
      Co-authored-by: default avatarDavid Taylor <tinystatemachine@gmail.com>
      7a3778b0
    • craig[bot]'s avatar
      Merge #97715 · e0f858ec
      craig[bot] authored
      
      97715: changefeedccl: Lower memory allowance per changefeed r=miretskiy a=miretskiy
      
      Lower memory allowance to 128MB in `admission-control/elastic-cdc` since we start 10 changefeeds, and those could use up too much memory from the sql monitor, resulting in query failures.
      
      Fixes #96542
      Release note: None
      
      Co-authored-by: default avatarYevgeniy Miretskiy <yevgeniy@cockroachlabs.com>
      e0f858ec
    • Michael Butler's avatar
      c2c: add c2c/tpcc/warehouses=1000/duration=60/cutover=30 roachtest · 4610bc6e
      Michael Butler authored
      Epic: none
      
      Release note: none
      4610bc6e
    • Michael Butler's avatar
      c2c: refactor tenant ru limit removal in roachtests · d4abde84
      Michael Butler authored
      This patch streamlines how we remove ru limiting for roachtests that use
      tenants. For the c2c tests specifically, we know remove the limits on the dst
      cluster tenant as soon as the replication stream begins.
      
      Release note: None
      d4abde84
    • Michael Butler's avatar
      c2c: gather perf metrics from prometheus · 62d3f2e9
      Michael Butler authored
      c2c roachtest performance metrics are now gathered by a prom/grafana instance
      running locally on the roachprod cluster. This change allows us to gather and
      process any metrics exposed to the crdb prom endpoint. Specifically, we now
      gather: `capacity_used`, `replication_logical_bytes`, `replication_sst_bytes`
      at various points during the c2c roachtest, allowing us to measure:
      - Initial Scan Throughput: initial scan size / initial scan duration
      - Workload Throughput: data ingested during workload / workload duration
      - Cutover Throughput: (data ingested between cutover time and cutover cmd) /
        (cutover process duration)
      
      where the size of these operations can be measured as either physical
      replicated bytes, logical ingested bytes, or physical ingested bytes on the
      source cluster.
      
      This patch also fixes a recent bug which mislabeled src cluster throughput as
      initial scan throughput.
      
      Epic: None
      62d3f2e9
    • Michael Butler's avatar
      c2c: set replication_lag metric to 0 before high water mark is set · 999406fe
      Michael Butler authored
      Fixes #97224
      
      Release note: None
      999406fe
    • Xiang Gu's avatar
      schemachanger: Support drop column with dependent constraint · f84bd02a
      Xiang Gu authored
      Previously, we fallback to legacy schema changer if we drop a column
      that is referenced in a constraint. This commit enables this behavior
      in the declarative schema changer.
      f84bd02a
    • Xiang Gu's avatar
      sql, schemachanger: Support dropping UWI with dependent inbound FKs · 8c6cf287
      Xiang Gu authored
      Previously, when a UWI constraint is used to serve an inbound FK and we
      drop the UWI constraint, the FK is not dropped. This causes a corrupt
      state where a FK constraint exists but the referenced table does not
      ensure uniqueness on the referenced columns. This commit fixes this
      issue in both legacy and declarative schema changer.
      8c6cf287
    • craig[bot]'s avatar
      Merge #97729 #97730 · 0cf31e3a
      craig[bot] authored
      
      97729: logictest: disable auto stats collection on system tables r=yuzefovich a=yuzefovich
      
      This commit makes it so that we disable auto stats collection on the system tables in all logic tests in order to make them deterministic. We already do this for all non-system tables.
      
      Fixes: #97704.
      
      Release note: None
      
      97730: kv: skip TestBackoffOnRangefeedFailure r=adityamaru a=rharding6373
      
      Skipping flaky test.
      
      Informs: #97725
      Epic: None
      Release note: None
      
      Co-authored-by: default avatarYahor Yuzefovich <yahor@cockroachlabs.com>
      Co-authored-by: default avatarrharding6373 <rharding6373@users.noreply.github.com>
      0cf31e3a
    • craig[bot]'s avatar
      Merge #97668 · c5068fce
      craig[bot] authored
      
      97668: storage: reduce intent interleaving allocations r=sumeerbhola a=jbowens
      
      When seeking to a specific version, the intent interleaving iterator may need to construct the immediate successor next key to serve as a seek key within the lock table. The roachpb.NextKey method avoids allocations when its receiver's underlying slice already contains a trailing zero byte after the key. In all other cases, it must allocate and copy the receiver slice. In the context of the intent interleaving iterator, this is unnecessary. The intent interleaving iterator only temporarily needs to compute the next key for the purpose of constructing a lock-table seek key. Also, the intent interleaving iterator has a buffer available for constructing intent seek keys.
      
      This commit adds a new keys.LockTableSingleNextKey function that behaves identically to `keys.LockTableSingleKey(key.Next(), buf)` but avoids the intermediary step of materializing the next key.
      
      MVCC garbage collection may seek to a specific version, so the removal of this allocation and key copy is visible on the MVCCGarbageCollect microbenchmark.
      
      ```
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=true-24          1.070 ±   ∞ ¹    1.070 ±   1%          ~ (p=0.768 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=false-24       1.097 ±  3%      1.120 ±    ∞ ¹        ~ (p=0.286 n=6+1)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=false-24               4.974µ ±   ∞ ¹   4.790µ ±   1%     -3.70% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=true-24                5.377µ ±   ∞ ¹   4.882µ ±   2%     -9.22% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=false-24               7.648µ ±   ∞ ¹   7.399µ ±   1%     -3.26% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=true-24        1.090 ±  6%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=true-24                8.615µ ±   ∞ ¹   8.271µ ±   2%     -4.00% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=false-24               8.249µ ±   ∞ ¹   7.925µ ±   2%     -3.93% (p=0.008 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=false-24        1.021 ± 48%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=true-24                9.208µ ±   ∞ ¹   8.860µ ±   1%     -3.78% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=true-24         1.023 ± 50%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=false-24            8.699µ ±   ∞ ¹   8.389µ ±   3%     -3.57% (p=0.028 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=true-24             9.266µ ±   ∞ ¹   8.528µ ±   5%     -7.96% (p=0.013 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=false-24        1.112 ±  3%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=false-24            13.02µ ±   ∞ ¹   12.15µ ±   2%     -6.70% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=true-24         1.096 ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=true-24             13.49µ ±   ∞ ¹   12.76µ ±   3%     -5.38% (p=0.019 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=false-24          48.72µ ±   ∞ ¹   47.08µ ±   2%     -3.37% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=false-24      1.125 ±  7%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=true-24           57.19µ ±   ∞ ¹   54.01µ ±   2%     -5.56% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=false-24           13.97µ ±   ∞ ¹   13.21µ ±   2%          ~ (p=0.099 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=true-24       1.124 ±  4%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=true-24            15.22µ ±   ∞ ¹   14.67µ ±   1%     -3.58% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=false-24           18.44µ ±   ∞ ¹   17.91µ ±   2%          ~ (p=0.165 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=false-24       1.077 ±  9%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=true-24            21.51µ ±   ∞ ¹   20.70µ ±   1%     -3.76% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=true-24        1.058 ±  4%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=false-24         56.21µ ±   ∞ ¹   53.02µ ±   2%     -5.67% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=false-24       1.161 ±  7%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=true-24          66.05µ ±   ∞ ¹   62.73µ ±   2%     -5.04% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=true-24        1.155 ±  4%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=false-24           19.37µ ±   ∞ ¹   18.38µ ±   2%     -5.12% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=true-24            21.58µ ±   ∞ ¹   21.12µ ±   1%     -2.14% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=false-24           24.83µ ±   ∞ ¹   23.84µ ±   2%     -3.96% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=false-24     1.143 ±  8%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=true-24            29.28µ ±   ∞ ¹   28.70µ ±   1%     -2.00% (p=0.003 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=false-24         62.35µ ±   ∞ ¹   58.89µ ±   1%     -5.54% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=true-24      1.188 ±  8%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=false-24       1.057 ±  5%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=true-24          76.47µ ±   ∞ ¹   72.01µ ±   1%     -5.84% (p=0.019 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=true-24        1.075 ±  4%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=false-24          172.4µ ±   ∞ ¹   169.8µ ±   1%     -1.51% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=false-24       1.172 ±  7%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=true-24           215.9µ ±   ∞ ¹   211.7µ ±   1%     -1.94% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=false-24          208.5µ ±   ∞ ¹   202.8µ ±   1%     -2.69% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=true-24        1.148 ±  7%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=true-24           271.8µ ±   ∞ ¹   266.5µ ±   1%     -1.94% (p=0.008 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=false-24        249.6µ ±   ∞ ¹   243.7µ ±   1%          ~ (p=0.165 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=false-24     1.137 ± 11%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=true-24         331.4µ ±   ∞ ¹   329.1µ ±   0%     -0.69% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=false-24         332.7µ ±   ∞ ¹   329.6µ ±   2%          ~ (p=0.055 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=true-24          417.0µ ±   ∞ ¹   411.7µ ±   1%     -1.26% (p=0.003 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=true-24      1.098 ± 12%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=false-24         396.5µ ±   ∞ ¹   393.7µ ±   0%          ~ (p=0.055 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=true-24          526.4µ ±   ∞ ¹   523.8µ ±   1%          ~ (p=0.099 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=false-24       439.7µ ±   ∞ ¹   434.0µ ±   2%     -1.29% (p=0.019 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=true-24        597.9µ ±   ∞ ¹   592.1µ ±   1%     -0.98% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=false-24         331.7µ ±   ∞ ¹   327.5µ ±   1%     -1.25% (p=0.019 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=true-24          415.3µ ±   ∞ ¹   413.1µ ±   1%          ~ (p=0.099 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=false-24         397.1µ ±   ∞ ¹   392.4µ ±   1%     -1.17% (p=0.003 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=true-24          528.8µ ±   ∞ ¹   520.0µ ±   1%     -1.66% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=false-24       440.6µ ±   ∞ ¹   433.9µ ±   0%     -1.52% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=true-24        596.3µ ±   ∞ ¹   593.4µ ±   0%     -0.48% (p=0.008 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=false-24            1.754m ±   ∞ ¹   1.762m ±   1%          ~ (p=0.254 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=true-24             1.858m ±   ∞ ¹   1.826m ±   1%          ~ (p=0.099 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=false-24            2.510m ±   ∞ ¹   2.516m ±   2%          ~ (p=0.513 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=true-24             2.714m ±   ∞ ¹   2.723m ±   1%          ~ (p=0.371 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=false-24            2.563m ±   ∞ ¹   2.545m ±   2%          ~ (p=0.679 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=true-24             2.713m ±   ∞ ¹   2.758m ±   1%     +1.67% (p=0.040 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=false-24         87.58m ±   ∞ ¹   89.34m ± 181%          ~ (p=0.513 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=true-24          503.6m ±   ∞ ¹   333.8m ± 204%          ~ (p=1.000 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=false-24          1.040 ±   ∞ ¹    1.065 ±   2%          ~ (p=0.055 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=true-24           1.049 ±   ∞ ¹    1.064 ±   1%          ~ (p=0.075 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=false-24        1.062 ±   ∞ ¹    1.065 ±   2%          ~ (p=0.371 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=true-24         1.064 ±   ∞ ¹    1.068 ±   4%          ~ (p=1.000 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=false-24        341.7m ±   ∞ ¹   420.4m ±  40%          ~ (p=0.953 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=true-24        1003.3m ±   ∞ ¹   257.5m ±  96%    -74.33% (p=0.028 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=false-24         1.053 ±   ∞ ¹    1.071 ±   3%          ~ (p=0.165 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=true-24          1.054 ±   ∞ ¹    1.059 ±   1%          ~ (p=0.859 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=false-24       1.074 ±   ∞ ¹    1.074 ±   1%          ~ (p=0.953 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=true-24        1.096 ±   ∞ ¹    1.086 ±   4%          ~ (p=0.206 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=false-24       1011.4m ±   ∞ ¹   506.2m ±  59%    -49.95% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=true-24         510.0m ±   ∞ ¹   505.9m ±  34%          ~ (p=0.254 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=false-24         1.082 ±   ∞ ¹    1.066 ±   2%          ~ (p=0.129 n=5+10)
      
                                                                                                                                              │   allocs/op    │    allocs/op     vs base                    │
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=true-24        4.662k ±   ∞ ¹   3.618k ±   1%    -22.39% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=false-24     12.95k ±  7%     11.40k ±    ∞ ¹        ~ (p=0.286 n=6+1)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=false-24               8.000 ±   ∞ ¹    8.000 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=true-24                8.000 ±   ∞ ¹    8.000 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=false-24               10.00 ±   ∞ ¹    10.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=true-24      13.12k ±  5%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=true-24                14.00 ±   ∞ ¹    14.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=false-24               10.00 ±   ∞ ¹    10.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=false-24      4.421k ± 37%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=true-24                14.00 ±   ∞ ¹    14.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=true-24       4.427k ± 37%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=false-24            12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=true-24             12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=false-24      4.663k ±  1%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=false-24            14.00 ±   ∞ ¹    13.00 ±   0%     -7.14% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=true-24       4.663k ±  1%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=true-24             18.00 ±   ∞ ¹    17.00 ±   0%     -5.56% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=false-24          23.00 ±   ∞ ¹    22.00 ±   0%     -4.35% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=false-24    12.97k ±  3%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=true-24           27.00 ±   ∞ ¹    26.00 ±   0%     -3.70% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=false-24           12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=true-24     12.70k ±  6%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=true-24            12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=false-24           14.00 ±   ∞ ¹    13.00 ±   0%     -7.14% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=false-24     4.519k ±  8%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=true-24            18.00 ±   ∞ ¹    17.00 ±   0%     -5.56% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=true-24      4.510k ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=false-24         23.00 ±   ∞ ¹    22.00 ±   0%     -4.35% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=false-24     4.738k ±  1%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=true-24          27.00 ±   ∞ ¹    26.00 ±   0%     -3.70% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=true-24      4.729k ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=false-24           12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=true-24            12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=false-24           14.00 ±   ∞ ¹    13.00 ±   0%     -7.14% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=false-24   13.00k ±  6%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=true-24            18.00 ±   ∞ ¹    17.00 ±   0%     -5.56% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=false-24         23.00 ±   ∞ ¹    22.00 ±   0%     -4.35% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=true-24    12.92k ±  6%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=false-24     3.466k ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=true-24          27.00 ±   ∞ ¹    26.00 ±   0%     -3.70% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=true-24      3.514k ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=false-24          13.00 ±   ∞ ¹    12.00 ±   0%     -7.69% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=false-24     3.700k ±  1%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=true-24           13.00 ±   ∞ ¹    12.00 ±   0%     -7.69% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=false-24          15.00 ±   ∞ ¹    14.00 ±   0%     -6.67% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=true-24      3.704k ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=true-24           19.00 ±   ∞ ¹    18.00 ±   0%     -5.26% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=false-24        24.00 ±   ∞ ¹    23.00 ±   0%     -4.17% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=false-24   11.69k ±  6%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=true-24         28.00 ±   ∞ ¹    27.00 ±   0%     -3.57% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=false-24         13.00 ±   ∞ ¹    12.00 ±   0%     -7.69% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=true-24          13.00 ±   ∞ ¹    12.00 ±   0%     -7.69% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=true-24    11.78k ±  7%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=false-24         15.00 ±   ∞ ¹    14.00 ±   0%     -6.67% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=true-24          19.00 ±   ∞ ¹    18.00 ±   0%     -5.26% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=false-24       23.00 ±   ∞ ¹    22.00 ±   0%     -4.35% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=true-24        28.00 ±   ∞ ¹    27.00 ±   0%     -3.57% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=false-24         9.000 ±   ∞ ¹    9.000 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=true-24          9.000 ±   ∞ ¹    9.000 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=false-24         11.00 ±   ∞ ¹    11.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=true-24          15.00 ±   ∞ ¹    15.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=false-24       19.00 ±   ∞ ¹    19.00 ±   0%          ~ (p=0.527 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=true-24        24.00 ±   ∞ ¹    24.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=false-24            12.00 ±   ∞ ¹    12.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=true-24             12.00 ±   ∞ ¹    12.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=false-24            15.00 ±   ∞ ¹    15.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=true-24             19.00 ±   ∞ ¹    19.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=false-24            16.00 ±   ∞ ¹    16.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=true-24             23.00 ±   ∞ ¹    23.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=false-24        1328.0 ±   ∞ ¹    317.0 ± 174%    -76.13% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=true-24         2.742k ±   ∞ ¹   1.137k ± 203%          ~ (p=0.055 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=false-24        4.652k ±   ∞ ¹   3.616k ±   1%    -22.27% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=true-24         4.650k ±   ∞ ¹   3.618k ±   1%    -22.19% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=false-24      13.09k ±   ∞ ¹   11.97k ±   6%     -8.62% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=true-24       13.22k ±   ∞ ¹   12.09k ±   3%     -8.56% (p=0.003 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=false-24       2.182k ±   ∞ ¹   1.447k ±  39%    -33.68% (p=0.028 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=true-24        4422.0 ±   ∞ ¹    872.0 ±  98%    -80.28% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=false-24       4.630k ±   ∞ ¹   3.611k ±   1%    -22.02% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=true-24        4.638k ±   ∞ ¹   3.634k ±   1%    -21.66% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=false-24     12.80k ±   ∞ ¹   11.94k ±   4%     -6.67% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=true-24      12.75k ±   ∞ ¹   11.97k ±   3%     -6.08% (p=0.013 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=false-24       4.441k ±   ∞ ¹   1.722k ±  59%    -61.21% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=true-24        2.755k ±   ∞ ¹   1.720k ±  33%    -37.57% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=false-24       4.663k ±   ∞ ¹   3.616k ±   1%    -22.44% (p=0.001 n=5+10)
      ```
      
      Informs #97570.
      Epic: None
      Release note: None
      
      Co-authored-by: default avatarJackson Owens <jackson@cockroachlabs.com>
      c5068fce
    • rharding6373's avatar
      kv: skip TestBackoffOnRangefeedFailure · daac4509
      rharding6373 authored
      Skipping flaky test.
      
      Informs: #97725
      Epic: None
      Release note: None
      daac4509
    • craig[bot]'s avatar
      Merge #97222 · 7730070a
      craig[bot] authored
      
      97222: storage: randomly mangle range key buffers in test r=erikgrinaker a=jbowens
      
      Randomly mangle buffers for range key bounds, suffixes and values when the
      iterator becomes invalid or RangeKeyChanged().
      
      Additionally, fix a bug in pebbleMVCCScanner surfaced by this mangling, whereby
      the scanner could step an iterator positioned at a bare range key into an
      exhausted position but continue to make use of pointers to the previous
      iterator position's range key buffers.
      
      Epic: None
      Release note: None
      
      Co-authored-by: default avatarJackson Owens <jackson@cockroachlabs.com>
      7730070a
    • Yahor Yuzefovich's avatar
      logictest: disable auto stats collection on system tables · 9aa9e8b3
      Yahor Yuzefovich authored
      This commit makes it so that we disable auto stats collection on the
      system tables in all logic tests in order to make them deterministic.
      We already do this for all non-system tables.
      
      Release note: None
      9aa9e8b3
    • Andrew Baptist's avatar
      storepool: consider stores suspect on re-join · a6531807
      Andrew Baptist authored
      Previously, nodes that failed to heartbeat for longer than the
      lease expiration interval (currently 6 seconds) would only be considered
      suspect when re-joining the cluster within 5 minutes. After 5 minutes
      the store would be marked as dead, and if a store rejoins after it is
      dead it could immediately begin accepting leases. This caused problems
      since there is often a lot of recovery work to do when a node rejoins.
      
      This change always marks a node that rejoins a cluster as suspect.
      
      Release note (ops change): Nodes will now be considered suspect when
      re-joining a cluster and not accept lease transfers for one
      server.time_after_store_suspect window, which defaults to 30s.
      
      Epic: none
      a6531807
    • Jackson Owens's avatar
      storage: reduce intent interleaving allocations · 0b2c2358
      Jackson Owens authored
      When seeking to a specific version, the intent interleaving iterator may need
      to construct the immediate successor next key to serve as a seek key within the
      lock table. The roachpb.NextKey method avoids allocations when its receiver's
      underlying slice already contains a trailing zero byte after the key. In all
      other cases, it must allocate and copy the receiver slice. In the context of
      the intent interleaving iterator, this is unnecessary. The intent interleaving
      iterator only temporarily needs to compute the next key for the purpose of
      constructing a lock-table seek key. Also, the intent interleaving iterator has
      a buffer available for constructing intent seek keys.
      
      This commit adds a new keys.LockTableSingleNextKey function that behaves
      identically to `keys.LockTableSingleKey(key.Next(), buf)` but avoids
      the intermediary step of materializing the next key.
      
      MVCC garbage collection frequently seeks to a specific version, so the removal
      of this allocation and key copy is visible on the MVCCGarbageCollect
      microbenchmark.
      
      ```
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=true-24          1.070 ±   ∞ ¹    1.070 ±   1%          ~ (p=0.768 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=false-24       1.097 ±  3%      1.120 ±    ∞ ¹        ~ (p=0.286 n=6+1)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=false-24               4.974µ ±   ∞ ¹   4.790µ ±   1%     -3.70% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=true-24                5.377µ ±   ∞ ¹   4.882µ ±   2%     -9.22% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=false-24               7.648µ ±   ∞ ¹   7.399µ ±   1%     -3.26% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=true-24        1.090 ±  6%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=true-24                8.615µ ±   ∞ ¹   8.271µ ±   2%     -4.00% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=false-24               8.249µ ±   ∞ ¹   7.925µ ±   2%     -3.93% (p=0.008 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=false-24        1.021 ± 48%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=true-24                9.208µ ±   ∞ ¹   8.860µ ±   1%     -3.78% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=true-24         1.023 ± 50%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=false-24            8.699µ ±   ∞ ¹   8.389µ ±   3%     -3.57% (p=0.028 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=true-24             9.266µ ±   ∞ ¹   8.528µ ±   5%     -7.96% (p=0.013 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=false-24        1.112 ±  3%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=false-24            13.02µ ±   ∞ ¹   12.15µ ±   2%     -6.70% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=true-24         1.096 ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=true-24             13.49µ ±   ∞ ¹   12.76µ ±   3%     -5.38% (p=0.019 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=false-24          48.72µ ±   ∞ ¹   47.08µ ±   2%     -3.37% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=false-24      1.125 ±  7%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=true-24           57.19µ ±   ∞ ¹   54.01µ ±   2%     -5.56% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=false-24           13.97µ ±   ∞ ¹   13.21µ ±   2%          ~ (p=0.099 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=true-24       1.124 ±  4%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=true-24            15.22µ ±   ∞ ¹   14.67µ ±   1%     -3.58% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=false-24           18.44µ ±   ∞ ¹   17.91µ ±   2%          ~ (p=0.165 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=false-24       1.077 ±  9%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=true-24            21.51µ ±   ∞ ¹   20.70µ ±   1%     -3.76% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=true-24        1.058 ±  4%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=false-24         56.21µ ±   ∞ ¹   53.02µ ±   2%     -5.67% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=false-24       1.161 ±  7%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=true-24          66.05µ ±   ∞ ¹   62.73µ ±   2%     -5.04% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=true-24        1.155 ±  4%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=false-24           19.37µ ±   ∞ ¹   18.38µ ±   2%     -5.12% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=true-24            21.58µ ±   ∞ ¹   21.12µ ±   1%     -2.14% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=false-24           24.83µ ±   ∞ ¹   23.84µ ±   2%     -3.96% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=false-24     1.143 ±  8%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=true-24            29.28µ ±   ∞ ¹   28.70µ ±   1%     -2.00% (p=0.003 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=false-24         62.35µ ±   ∞ ¹   58.89µ ±   1%     -5.54% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=true-24      1.188 ±  8%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=false-24       1.057 ±  5%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=true-24          76.47µ ±   ∞ ¹   72.01µ ±   1%     -5.84% (p=0.019 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=true-24        1.075 ±  4%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=false-24          172.4µ ±   ∞ ¹   169.8µ ±   1%     -1.51% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=false-24       1.172 ±  7%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=true-24           215.9µ ±   ∞ ¹   211.7µ ±   1%     -1.94% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=false-24          208.5µ ±   ∞ ¹   202.8µ ±   1%     -2.69% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=true-24        1.148 ±  7%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=true-24           271.8µ ±   ∞ ¹   266.5µ ±   1%     -1.94% (p=0.008 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=false-24        249.6µ ±   ∞ ¹   243.7µ ±   1%          ~ (p=0.165 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=false-24     1.137 ± 11%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=true-24         331.4µ ±   ∞ ¹   329.1µ ±   0%     -0.69% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=false-24         332.7µ ±   ∞ ¹   329.6µ ±   2%          ~ (p=0.055 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=true-24          417.0µ ±   ∞ ¹   411.7µ ±   1%     -1.26% (p=0.003 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=true-24      1.098 ± 12%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=false-24         396.5µ ±   ∞ ¹   393.7µ ±   0%          ~ (p=0.055 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=true-24          526.4µ ±   ∞ ¹   523.8µ ±   1%          ~ (p=0.099 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=false-24       439.7µ ±   ∞ ¹   434.0µ ±   2%     -1.29% (p=0.019 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=true-24        597.9µ ±   ∞ ¹   592.1µ ±   1%     -0.98% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=false-24         331.7µ ±   ∞ ¹   327.5µ ±   1%     -1.25% (p=0.019 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=true-24          415.3µ ±   ∞ ¹   413.1µ ±   1%          ~ (p=0.099 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=false-24         397.1µ ±   ∞ ¹   392.4µ ±   1%     -1.17% (p=0.003 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=true-24          528.8µ ±   ∞ ¹   520.0µ ±   1%     -1.66% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=false-24       440.6µ ±   ∞ ¹   433.9µ ±   0%     -1.52% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=true-24        596.3µ ±   ∞ ¹   593.4µ ±   0%     -0.48% (p=0.008 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=false-24            1.754m ±   ∞ ¹   1.762m ±   1%          ~ (p=0.254 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=true-24             1.858m ±   ∞ ¹   1.826m ±   1%          ~ (p=0.099 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=false-24            2.510m ±   ∞ ¹   2.516m ±   2%          ~ (p=0.513 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=true-24             2.714m ±   ∞ ¹   2.723m ±   1%          ~ (p=0.371 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=false-24            2.563m ±   ∞ ¹   2.545m ±   2%          ~ (p=0.679 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=true-24             2.713m ±   ∞ ¹   2.758m ±   1%     +1.67% (p=0.040 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=false-24         87.58m ±   ∞ ¹   89.34m ± 181%          ~ (p=0.513 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=true-24          503.6m ±   ∞ ¹   333.8m ± 204%          ~ (p=1.000 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=false-24          1.040 ±   ∞ ¹    1.065 ±   2%          ~ (p=0.055 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=true-24           1.049 ±   ∞ ¹    1.064 ±   1%          ~ (p=0.075 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=false-24        1.062 ±   ∞ ¹    1.065 ±   2%          ~ (p=0.371 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=true-24         1.064 ±   ∞ ¹    1.068 ±   4%          ~ (p=1.000 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=false-24        341.7m ±   ∞ ¹   420.4m ±  40%          ~ (p=0.953 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=true-24        1003.3m ±   ∞ ¹   257.5m ±  96%    -74.33% (p=0.028 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=false-24         1.053 ±   ∞ ¹    1.071 ±   3%          ~ (p=0.165 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=true-24          1.054 ±   ∞ ¹    1.059 ±   1%          ~ (p=0.859 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=false-24       1.074 ±   ∞ ¹    1.074 ±   1%          ~ (p=0.953 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=true-24        1.096 ±   ∞ ¹    1.086 ±   4%          ~ (p=0.206 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=false-24       1011.4m ±   ∞ ¹   506.2m ±  59%    -49.95% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=true-24         510.0m ±   ∞ ¹   505.9m ±  34%          ~ (p=0.254 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=false-24         1.082 ±   ∞ ¹    1.066 ±   2%          ~ (p=0.129 n=5+10)
      
                                                                                                                                              │   allocs/op    │    allocs/op     vs base                    │
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=true-24        4.662k ±   ∞ ¹   3.618k ±   1%    -22.39% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=false-24     12.95k ±  7%     11.40k ±    ∞ ¹        ~ (p=0.286 n=6+1)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=false-24               8.000 ±   ∞ ¹    8.000 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=true-24                8.000 ±   ∞ ¹    8.000 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=false-24               10.00 ±   ∞ ¹    10.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=true-24      13.12k ±  5%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=true-24                14.00 ±   ∞ ¹    14.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=false-24               10.00 ±   ∞ ¹    10.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=false-24      4.421k ± 37%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=true-24                14.00 ±   ∞ ¹    14.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=true-24       4.427k ± 37%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=false-24            12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=true-24             12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=false-24      4.663k ±  1%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=false-24            14.00 ±   ∞ ¹    13.00 ±   0%     -7.14% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=true-24       4.663k ±  1%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=true-24             18.00 ±   ∞ ¹    17.00 ±   0%     -5.56% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=false-24          23.00 ±   ∞ ¹    22.00 ±   0%     -4.35% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=false-24    12.97k ±  3%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=true-24           27.00 ±   ∞ ¹    26.00 ±   0%     -3.70% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=false-24           12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=true-24     12.70k ±  6%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=true-24            12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=false-24           14.00 ±   ∞ ¹    13.00 ±   0%     -7.14% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=false-24     4.519k ±  8%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=true-24            18.00 ±   ∞ ¹    17.00 ±   0%     -5.56% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=true-24      4.510k ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=false-24         23.00 ±   ∞ ¹    22.00 ±   0%     -4.35% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=false-24     4.738k ±  1%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=true-24          27.00 ±   ∞ ¹    26.00 ±   0%     -3.70% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=true-24      4.729k ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=false-24           12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=true-24            12.00 ±   ∞ ¹    11.00 ±   0%     -8.33% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=false-24           14.00 ±   ∞ ¹    13.00 ±   0%     -7.14% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=false-24   13.00k ±  6%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=true-24            18.00 ±   ∞ ¹    17.00 ±   0%     -5.56% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=false-24         23.00 ±   ∞ ¹    22.00 ±   0%     -4.35% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=true-24    12.92k ±  6%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=false-24     3.466k ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=32/numRangeTs=100/updateStats=true-24          27.00 ±   ∞ ¹    26.00 ±   0%     -3.70% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=true-24      3.514k ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=false-24          13.00 ±   ∞ ¹    12.00 ±   0%     -7.69% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=false-24     3.700k ±  1%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=0/updateStats=true-24           13.00 ±   ∞ ¹    12.00 ±   0%     -7.69% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=false-24          15.00 ±   ∞ ¹    14.00 ±   0%     -6.67% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=true-24      3.704k ±  2%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=1/updateStats=true-24           19.00 ±   ∞ ¹    18.00 ±   0%     -5.26% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=false-24        24.00 ±   ∞ ¹    23.00 ±   0%     -4.17% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=false-24   11.69k ±  6%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=512/numRangeTs=100/updateStats=true-24         28.00 ±   ∞ ¹    27.00 ±   0%     -3.57% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=false-24         13.00 ±   ∞ ¹    12.00 ±   0%     -7.69% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=0/updateStats=true-24          13.00 ±   ∞ ¹    12.00 ±   0%     -7.69% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=true-24    11.78k ±  7%
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=false-24         15.00 ±   ∞ ¹    14.00 ±   0%     -6.67% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=1/updateStats=true-24          19.00 ±   ∞ ¹    18.00 ±   0%     -5.26% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=false-24       23.00 ±   ∞ ¹    22.00 ±   0%     -4.35% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1015/numRangeTs=100/updateStats=true-24        28.00 ±   ∞ ¹    27.00 ±   0%     -3.57% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=false-24         9.000 ±   ∞ ¹    9.000 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=0/updateStats=true-24          9.000 ±   ∞ ¹    9.000 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=false-24         11.00 ±   ∞ ¹    11.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=1/updateStats=true-24          15.00 ±   ∞ ¹    15.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=false-24       19.00 ±   ∞ ¹    19.00 ±   0%          ~ (p=0.527 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1/numVersions=1024/deleteVersions=1023/numRangeTs=100/updateStats=true-24        24.00 ±   ∞ ¹    24.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=false-24            12.00 ±   ∞ ¹    12.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=0/updateStats=true-24             12.00 ±   ∞ ¹    12.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=false-24            15.00 ±   ∞ ¹    15.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=1/updateStats=true-24             19.00 ±   ∞ ¹    19.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=false-24            16.00 ±   ∞ ¹    16.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=2/deleteVersions=1/numRangeTs=2/updateStats=true-24             23.00 ±   ∞ ¹    23.00 ±   0%          ~ (p=1.000 n=5+10) ²
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=false-24        1328.0 ±   ∞ ¹    317.0 ± 174%    -76.13% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=0/updateStats=true-24         2.742k ±   ∞ ¹   1.137k ± 203%          ~ (p=0.055 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=false-24        4.652k ±   ∞ ¹   3.616k ±   1%    -22.27% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=1/updateStats=true-24         4.650k ±   ∞ ¹   3.618k ±   1%    -22.19% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=false-24      13.09k ±   ∞ ¹   11.97k ±   6%     -8.62% (p=0.005 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=1/numRangeTs=100/updateStats=true-24       13.22k ±   ∞ ¹   12.09k ±   3%     -8.56% (p=0.003 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=false-24       2.182k ±   ∞ ¹   1.447k ±  39%    -33.68% (p=0.028 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=0/updateStats=true-24        4422.0 ±   ∞ ¹    872.0 ±  98%    -80.28% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=false-24       4.630k ±   ∞ ¹   3.611k ±   1%    -22.02% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=1/updateStats=true-24        4.638k ±   ∞ ¹   3.634k ±   1%    -21.66% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=false-24     12.80k ±   ∞ ¹   11.94k ±   4%     -6.67% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=16/numRangeTs=100/updateStats=true-24      12.75k ±   ∞ ¹   11.97k ±   3%     -6.08% (p=0.013 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=false-24       4.441k ±   ∞ ¹   1.722k ±  59%    -61.21% (p=0.001 n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=0/updateStats=true-24        2.755k ±   ∞ ¹   1.720k ±  33%    -37.57% (n=5+10)
      MVCCGarbageCollect/pebble/keySize=128/valSize=128/numKeys=1024/numVersions=1024/deleteVersions=32/numRangeTs=1/updateStats=false-24       4.663k ±   ∞ ¹   3.616k ±   1%    -22.44% (p=0.001 n=5+10)
      ```
      
      Informs #97570.
      Epic: None
      Release note: None
      0b2c2358
Loading