[MDEV-7060] Increase UNIV_PAGE_SIZE_MAX to 64KB for row_format=compressed Created: 2014-11-10  Updated: 2019-03-22  Resolved: 2019-03-22

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB, Storage Engine - XtraDB
Fix Version/s: N/A

Type: Task Priority: Minor
Reporter: Jan Lindström (Inactive) Assignee: Jan Lindström (Inactive)
Resolution: Won't Fix Votes: 0
Labels: None


 Description   

https://github.com/facebook/mysql-5.6/commit/df321e63c8743b1610d416628c20f4699e448d7e

MySQL 5.6 already has support for configurable page size so bumping up
the max is all that is required for this support, unlike in 5.1.

Unlike the other allowable page sizes, the extent size was increased to
2MB or 4MB in order to keep the descriptor array small enough to fit on a page.
Another option was to remove the unused XDES_CLEAN_BIT from the array but
that solution didn't work for a key block size of 1KB. Also, increasing
the extent size keeps the assert in in buf_dblwr_init that
srv_doublewrite_batch_size is < 2 * TRX_SYS_DOUBLEWRITE_BLOCK_SIZE quiet
so there was no need to reduce the batch size.

Also, at page sizes above 16KB, the offset stored in the dense directory
of compressed pages will exceed the 14 bits allocated for it by default.
Thus, 32KB or 64K pages increase the slot size to 3 bytes and give a full 2 bytes for the offset.

Because UNIV_PAGE_SIZE has a type now ((ulint) srv__page_size) some precompile assertions
in page0zip won't work anymore. Change those to runtime assertions.

This task will allow > 16K pages also for row_format=compressed



 Comments   
Comment by Marko Mäkelä [ 2019-03-22 ]

I think that we should deprecate InnoDB’s ROW_FORMAT=COMPRESSED rather than extend it in any way. I designed and implemented it based on Heikki Tuuri’s high level ideas. It may have been a good idea in the early 2000s when SSDs were not yet in widespread use.

Generated at Thu Feb 08 07:16:39 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.