Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-40945

Flip the default value of innodb_index_shrink from ON (opt-in) to OFF (opt-out)

    XMLWordPrintable

Details

    Description

      MDEV-38814 introduced a new global variable innodb_index_shrink default ON (opt-in) to control whether record-growing UPDATE should aggressively attempt shrinking the B-tree resorting to pessimistic path (legacy behavior), or can allow optimistic path more often (faster, less contended), at cost of slightly sparser trees (new behavior, more split-prone).

      Such behavior is pinned by the test added in MDEV-38814, but only in a few "controlled" conditions.
      HammerDB TPROC-C performance testing up to now discovered no regression with innodb_index_shrink=OFF.
      However, a dedicated testing round will be performed with particular attention to any bloat that might occur due to setting innodb_index_shrink=OFF.

      This ticket proposes to flip the default value of innodb_index_shrink from ON (opt-in, no optimization by default) to OFF (opt-out, optimization enabled by default), for the newer server version 13.3.
      It's currently blocked by the aforementioned testing campaign.

      MDEV-39851, agreed as a way forward for the variable in newer versions (such as 13.3 would be), proposes to switch the variable from a global one to the default session value of a new per-index one (possibly called shrink, in the MDEV-37070 fashion).
      If innodb_index_shrink would become the default value of a new per-index option, then switching the default value would affect only those new DDL coming after the switch, leaving existing tables untouched.
      Possibly, a better way forward for MDEV-39851 could therefore be something similar to post-MDEV-37070 innodb_adaptive_hash_index: that is a global switch that can be disabled/controlled with a per-index granularity with the new per-index option.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              alessandro.vetere Alessandro Vetere
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - 2d
                  2d
                  Remaining:
                  Remaining Estimate - 2d
                  2d
                  Logged:
                  Time Spent - Not Specified
                  Not Specified

                  Git Integration

                    Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.