In the new InnoDB lab release we support page sizes of 32k and 64k. This gives users even more choices on the page size, allowing you to further customize InnoDB for your particular workload.
There are some things worthy of note related to this new feature:
- The extent size changes when the
innodb_page_sizeis set 32k or 64k.
The extent size is 2M for 32k page sizes, and 4M for 64k page sizes (the extent size is 1M for 4k, 8k, and 16k page sizes). If we do not enlarge the extent size then we will have too many extent headers on the allocation bitmap page, and the bitmap page will overflow.
innodb_log_buffer_sizedefault value changes when the
innodb_page_sizeis set to 32k or 64k. We change the
innodb_log_buffer_sizedefault value from 8M to 16M in this case. If we don’t increase the
innodb_log_buffer_sizethen we may suffer from a lack of free log pages because we have fewer available log buffer pages.
- We do not support compression when
innodb_page_sizeis set to 32k or 64k.
innodb_page_sizeis set to 32k or 64k, you will get the following warning if you include a
KEY_BLOCK_SIZEclause in your table DDL:
Warning 1478 InnoDB: Cannot create a COMPRESSED table when innodb_page_size > 16k
innodb_strict_modeis ON, you will instead get the following error:
Error 1031 Table storage engine for 't1' doesn't have this option
- The maximum record size is 16k when
innodb_page_sizeis set to 64k.
In theory we can store a record whose size is about 50% of the page size. In ROW_FORMAT=REDUNDANT, the record header contains 14-bit pointers to the end of each field, limiting the maximum record size to 16k. For simplicity, we enforce the 16k record size limit on all row formats when
innodb_page_sizesetting is global for all tablespaces within a single MySQL server instance.
We look forward to your feedback on this new feature! Please let us if you encounter any issues, or if you have any more general feedback.
Thank you for using MySQL!