MariaDB Enterprise Server InnoDB Purge Threads
This page is part of MariaDB's Documentation.
The parent of this page is: InnoDB Architecture for MariaDB Enterprise Server
Topics on this page:
Overview
In MariaDB Enterprise Server, the InnoDB storage engine uses Purge Threads to perform garbage collection in the background. The Purge Threads are related to multi-version concurrency control (MVCC).
The Purge Threads perform garbage collection of various items:
The Purge Threads perform garbage collection of the InnoDB Undo Log. When a row is updated in the clustered index, InnoDB updates the values in the clustered index, and the old row version is added to the Undo Log. The Purge Threads scan the Undo Log for row versions that are not needed by open transactions and permanently delete them. In ES 10.3 and later, if the remaining clustered index record is the oldest possible row version, the Purge Thread resets the record's hidden
DB_TRX_ID
field to0
.The Purge Threads perform garbage collection of index records. When an indexed column is updated, InnoDB creates a new index record for the updated value in each affected index, and the old index records are delete-marked. When the primary key column is updated, InnoDB creates a new index record for the updated value in every index, and each old index record is delete-marked. The Purge Threads scan for delete-marked index records and permanently delete them.
The Purge Threads perform garbage collection of freed overflow pages. BLOB, CHAR, TEXT, VARCHAR, VARBINARY, and related types are sometimes stored on overflow pages. When the value on the overflow page is deleted or updated, the overflow page is no longer needed. The Purge Threads delete these freed overflow pages.
Feature Summary
Feature | Detail | Resources |
---|---|---|
Thread | InnoDB Purge Threads | |
Storage Engine | InnoDB | |
Purpose | Garbage Collection of:
- Delete-marked secondary index records
- Freed overflow pages
| |
Availability | All ES and CS versions | |
Quantity | Set by innodb_ |
Basic Configuration
[mariadb]
...
innodb_purge_threads=8
SET GLOBAL innodb_purge_threads=8;
SHOW GLOBAL VARIABLES
LIKE 'innodb_purge_threads';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_purge_threads | 8 |
+----------------------+-------+