innodb_log_buffer_size=16M 初始化mysql mysqld --initialize --console --innodb_page_size=64k
#define UNIV_PAGE_SIZE_SHIFT 13 #define UNIV_PAGE_SIZE (2 * 8192) 页大小16K #define UNIV_PAGE_SIZE_SHIFT 14 #define UNIV_PAGE_SIZE (4 * 8192) 页大小32K #define UNIV_PAGE_SIZE_SHIFT 15 #define UNIV_PAGE_SIZE (8 * 8192) 页大小64K #define UNIV_PAGE_SIZE_SHIFT 16 然后可以编译了。
innodb_page_size选项指定MySQL实例中所有InnoDB表空间的页面大小。 该值在创建实例时设置,并在此后保持不变。 有效值为64k,32k,16k(默认值),8k和4k。 或者,您可以以字节为单位指定页面大小(65536,32768,16384,8192,4096)。16k的默认页面大小适用于各种工作负载,特别是涉及涉及批量更新的表扫描和DML操作的查询。
明白了是怎么一回事后,就可以解决出现问题了,减少varchar(1000)的字段数量,或者改存储引擎为myisam;还可以增加page_size的大小:如改为32k,64k。由于需求不好改动,数据库的页块大小改变需要改动源码,了解该表以查询为主,更新非常少,所以改为myisam存储引擎: 可以看到myisam存储引擎不受此限制。 从上面也可以看出,...
[mysqld] innodb_page_size=32K # 或者你想要的其他值,如 8K, 16K, 64K 等,但必须是 2 的幂次方且小于等于 64K 请注意,如果你正在使用的是一个已经包含数据的 InnoDB 数据库,并且想要更改 innodb_page_size,这是非常危险且通常不推荐的操作。正确的做法是在初始化新的数据库实例时设置所需的页面大小。
InnoDB用于写入磁盘上日志文件的缓冲区大小(以字节为单位)。 通过引入32k和64k innodb_page_size值,默认值从8MB变为16MB。 大型日志缓冲区使大型事务能够运行,而无需在事务提交之前将日志写入磁盘。 因此,如果您有更新,插入或删除许多行的事务,则使日志缓冲区更大可以节省磁盘I / O. ...
New issue InnoDB is not using the custom configuration file at initialisation, so initialises files with 16k page size instead of 64k page size configured then won't start. #98 Open aaronduce opened this issue Feb 9, 2023· 2 comments ...
页的大小是由创建数据库表时指定的存储参数 innodb_page_size 决定的 参数一旦设置就不能更改,不然就得刷页里面大量的数据 CREATE TABLE my_table (...) ENGINE = InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 PAGE_COMPRESSED=1 PAGE_SIZE=64K; ...
Step 1:从ib_logfile1的指定位置开始读取redo log,每次读取4 * page_size的大小,这里我们默认页面大小为16K,所以每次读取64K的redo log到缓存中,redo log每条记录(block)的大小为512字节。 Step 2:读取到缓存中的redo log通过解析、验证等一系列过程后,把redo log的内容部分保存到用于恢复的缓存recv_sys->buf,...
4.在undo表空间中的所有回滚段都被释放后,截断操作将运行并且undo表空间将被截断为其初始大小。undo表空间文件的初始大小取决于innodb_page_size值。 对于默认的16k InnoDB页面大小,初始undo表空间文件大小为10MiB。 对于4k,8k,32k和64k页大小,初始undo表空间文件大小分别为7MiB,8MiB,20MiB和40MiB。