Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.2(EOL), 10.3(EOL), 10.4(EOL)
Description
The function trx_rseg_header_create() is emitting a large amount of low-level redo log records for initializing an array of data to FIL_NULL (0xff bytes). In MDEV-13564, the mini-transaction log size for initializing an undo tablespace exceeds 1 megabyte, triggering some warnings and requiring a slightly bigger buffer pool size to avoid a hang during crash recovery.
We should introduce higher-level redo log record types for initializing undo log tablespaces. Ultimately, related to MDEV-14425 we should introduce a redo log format that only encodes a page number at most once per mini-transaction, instead of encoding it for every single operation. The introduction of redo log record types will require updating the redo log format tag, and thus prevent a crash-downgrade to earlier versions.
Attachments
Issue Links
- relates to
-
MDEV-14909 MariaDB 10.2 refuses to start up after clean shutdown of MariaDB 10.3
-
- Closed
-
-
MDEV-13564 TRUNCATE TABLE and undo tablespace truncation are not compatible with Mariabackup
-
- Closed
-
-
MDEV-14425 Change the InnoDB redo log format to reduce write amplification
-
- Closed
-
With a MLOG_MEMSET operation that I implemented, the mtr.m_impl->m_log.size() in trx_purge_truncate_history() reduced from 694,372 bytes to 37,348 bytes for innodb_page_size=16k. This operation can also be used for reducing the redo log volume for flst_init() on zero-initialized pages, and for replacing the combination of memset() and mlog_log_string().