Details
-
Task
-
Status: Closed (View Workflow)
-
Blocker
-
Resolution: Fixed
Description
MDEV-27734 disabled the problematic InnoDB change buffer by default, and MDEV-27735 deprecated the parameter in MariaDB Server 10.9.
The next logical step is to remove the parameter altogether, along with any code that would create the change buffer or add records to it. An attempt to downgrade to an earlier version will be caught and prevented by MDEV-30106.
In order to be able to simplify the buffer pool interfaces, upgrading will be split in two parts: First, check if an upgrade is needed. If it is, we will apply all redo log, possibly upgrade the redo log to the current format, and then attempt to upgrade the change buffer:
- Apply any buffered changes and clear the corresponding change buffer bitmap bits.
- Create an empty the change buffer root page.
- Free any pages that were allocated to the change buffer.
- Reset the change buffer root page, to mark the upgrade as completed and to prevent a downgrade to an earlier version.
If an error occurs during before the final upgrade step, it should be possible to downgrade to MariaDB Server 10.8 or a later version (using the currently latest redo log format that was changed in MDEV-14425).
As noted in MDEV-11634, the change buffer may improve performance in some cases, but it is also missing a lot of potential. The main motivation for removing the change buffer in its current form is that difficult-to-reproduce corruption bugs keep popping up, such as MDEV-24449, MDEV-26917, MDEV-30009.
Attachments
Issue Links
- blocks
-
MDEV-11658 Simpler, faster IMPORT of InnoDB tables
- Open
-
MDEV-32042 Special handling of crash recovery in buf_page_get_gen() may cause overhead
- Closed
- causes
-
MDEV-30895 Assertion `btr_cur->rtr_info->thr || !btr_cur->index()->is_committed()' failed in rtr_ins_enlarge_mbr after ALTER table force
- Closed
-
MDEV-31443 assert [FATAL] InnoDB: Unable to find charset-collation for 254 after upgrade from 10.11.4 to 11.0
- Closed
- is blocked by
-
MDEV-27734 Set innodb_change_buffering=none by default
- Closed
-
MDEV-27735 Deprecate the parameter innodb_change_buffering
- Closed
-
MDEV-30106 InnoDB fails to validate the change buffer on startup
- Closed
- relates to
-
MDEV-12700 Allow innodb_read_only startup without prior slow shutdown
- Closed
-
MDEV-23755 safety for upgrades (innodb) and packaging
- Closed
-
MDEV-25267 Reported latching order violation in ibuf_remove_free_page()
- Closed
-
MDEV-30009 InnoDB shutdown hangs when the change buffer is corrupted
- Closed
-
MDEV-30134 buf_page_t::unfix(): Assertion `!((f ^ (f - 1)) & LRU_MASK)' failed
- Closed
-
MDEV-30148 Race condition between non-persistent statistics and purge of InnoDB history
- Closed
-
MDEV-30216 Read-ahead unnecessarily allocates and frees pages when a page is in the buffer pool
- Closed
-
MDEV-31088 Server freeze due to innodb_change_buffering and innodb_file_per_table=0
- Closed
-
MDEV-32044 Mariadb crash after upgrading to 11.0.3: Failing assertion: local_len >= BTR_EXTERN_FIELD_REF_SIZE
- Closed
-
MDEV-32132 DROP INDEX followed by CREATE INDEX may corrupt data
- Closed
-
MDEV-34759 buf_page_get_low() is unnecessarily acquiring exclusive latch on secondary index pages
- Closed
-
MDEV-11634 Improve the InnoDB change buffer
- Closed
-
MDEV-24449 Corruption of system tablespace or last recovered page
- Closed
-
MDEV-26917 InnoDB: Clustered record for sec rec not found index
- Closed
-
MDEV-30009 InnoDB shutdown hangs when the change buffer is corrupted
- Closed
-
MDEV-30819 InnoDB fails to start up after downgrading from MariaDB 11.0
- Closed