Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MDEV-35398 Improve shrinking of system tablespace #3632

Open
wants to merge 1 commit into
base: 11.4
Choose a base branch
from

Conversation

Thirunarayanan
Copy link
Member

  • The Jira issue number for this PR is: MDEV-35398

Description

Problem:

From 10.6.13(86767bc) version, InnoDB purge thread does free the TRX_UNDO_CACHED undo segment. Pre-10.6.13 version data directory can contain TRX_UNDO_CACHED undo segment in system tablespace even though it has external undo tablespace.

During slow shutdown, InnoDB collects the segment from tables exist in system tablespace and cached undo segment in the system tablespace as used segment exist in system tablespace. While shrinking the system tablespace, last used extent can be used by undo cached segment. This extent blocks the shrinking of system tablespace in a effective way.

Solution:

While freeing the unused segment, InnoDB should free the cached undo segment header page exists in system tablespace and reset the TRX_RSEG_UNDO_SLOTS to 0xff for the rollback segment header page exists in system tablespace. This could improve the shrinking of system tablespace further.

How can this PR be tested?

./mtr innodb.undo_leak --mem

Basing the PR against the correct MariaDB version

  • This is a new feature or a refactoring, and the PR is based against the main branch.
  • This is a bug fix, and the PR is based against the earliest maintained branch in which the bug can be reproduced.

PR quality check

  • I checked the CODING_STANDARDS.md file and my PR conforms to this where appropriate.
  • For any trivial modifications to the PR, I am ok with the reviewer making the changes themselves.

@CLAassistant
Copy link

CLAassistant commented Nov 13, 2024

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

storage/innobase/fsp/fsp0fsp.cc Outdated Show resolved Hide resolved
storage/innobase/fsp/fsp0fsp.cc Outdated Show resolved Hide resolved
storage/innobase/fsp/fsp0fsp.cc Outdated Show resolved Hide resolved
mysql-test/suite/innodb/t/undo_leak.test Outdated Show resolved Hide resolved
mysql-test/suite/innodb/t/undo_leak.test Outdated Show resolved Hide resolved
mysql-test/suite/innodb/t/undo_leak.test Outdated Show resolved Hide resolved
storage/innobase/fsp/fsp0fsp.cc Outdated Show resolved Hide resolved
Problem:
========
From 10.6.13(86767bc) version,
InnoDB purge thread does free the TRX_UNDO_CACHED undo segment.
Pre-10.6.13 version data directory can contain TRX_UNDO_CACHED
undo segment in system tablespace even though it
has external undo tablespace.

During slow shutdown, InnoDB collects the segment from tables
exist in system tablespace and cached undo segment in
the system tablespace as used segment exist in system tablespace.
While shrinking the system tablespace, last used extent can be
used by undo cached segment. This extent blocks the shrinking of
system tablespace in a effective way.

Solution:
========
While freeing the unused segment, InnoDB should free the cached
undo segment header page exists in system tablespace and
reset the TRX_RSEG_UNDO_SLOTS to 0xff for the rollback segment
header page exists in system tablespace. This could improve
the shrinking of system tablespace further.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants