探索MySQL:一页16K的秘密 MySQL是一种流行的关系型数据库管理系统,它是由Oracle公司开发。MySQL使用B树作为其主要的数据索引结构,来管理数据表的数据。而MySQL数据库的存储控制由一个名为“页面(Page)”的数据区块来管理。每一个MySQL页面的大小是16KB。本文将深入探讨MySQL的页面特性,以及如何优化页面...
MySQL单表数据一般建议不要超过2000万行,但这个建议并非绝对,实际性能受限于多种因素。以下是具体原因:查询效率:当单表数据量达到千万级别时,查询速度会明显变慢。这是因为随着数据量的增加,查询所需扫描的数据量也随之增加,导致查询效率降低。主键类型限制:虽然理论上int类型的主键可以容纳约21亿条...
在编译MySQL时,需要指定UNIV_PAGE_SIZE_SHIFT参数或DEFAULT_PAGE_SIZE参数来设置所需的页大小。例如,要将页大小设置为32KB,可以在编译时使用cmake . -DDEFAULT_PAGE_SIZE=32K -DUNIV_PAGE_SIZE_SHIFT=15命令。需要注意的是,页大小必须是2的N次方乘以16KB(如32K=2^1×16K, 64K=2^2×16K)。
在后端开发中,经常听到关于MySQL单表数据量的建议,比如"一般不超过2000万行"。然而,这个建议并非铁律,实际性能受限于多种因素。让我们通过实验来探索这个限制的来源。首先,创建一张表并插入数据,我们使用rownum进行大量数据插入。随着数据量的增加,当达到千万级别时,查询速度明显变慢。这提示我们,单...
THRESHOLD),在某些场景下,可以人为介入,减少数据页的合并与分裂。在 InnoDB 表里,每个数据页默认16K 大小,默认 MERGE_THRESHOLD 值为 50,取值范围从 1 到 50,默认值即是最大值。也就是当页面记录数占比小于 50% 时,MySQL 会把这页和相邻的页面进行合并,保证数据页的紧凑,避免太多浪费。先...