数据库数据块(Data Block)是 IO 最小读写单元,磁盘、缓存、数据库之间都以块为单位交互。块大小设置不合理,会产生过多 IO、内存浪费、缓存命中率下降,直接影响读性能。不同数据库概念略有差异:Oracle 叫
db_block_size;MySQL InnoDB 叫innodb_page_size;PostgreSQL 叫block_size;openGauss 和 PG 同源也是block_size。
核心原理
数据库一次 IO,最少读取一个数据块。
块过小:一条记录跨多个块,查询需要多次 IO;IO 请求数量变多,寻道开销大。
块过大:只需要少量数据,也要读取整个大块到内存,造成 IO 带宽浪费,缓存被大量无效数据占满,缓存命中率下降。
调整块大小绝大多数数据库需要初始化实例时设置,创建实例后不能在线修改,不是改个参数重启就生效。
选型经验:块大小怎么选
关键点:行不能大于块大小。单条记录大小不能超过数据块,否则直接报错。

各数据库实操要点
1.MySQL InnoDB innodb_page_size
重要:实例初始化确定,不能后期修改,必须重建实例迁移数据
默认
16KB,可选:4k,8k,16k,32k,64k修改方式:初始化 mysqld 时指定
--innodb-page-size=8192,再导入数据调优逻辑
大量小行、高频索引随机查询:8K/16K
大字段、大记录、报表分析:32K
不要随便改成 64K,普通业务缓存会被大量无效页挤占,读性能反而下降。
2.Oracle db_block_size
Oracle 支持多块大小表空间,系统块(db_block_size)在创建数据库确定,不可改;可以创建不同块大小的独立表空间。
系统标准块:
db_block_size(建库确定)额外配置:
db_4k_cache_size、db_8k_cache_size、db_16k_cache_size,开启多块缓冲区
-- 创建16K块大小的表空间,用于报表大表
CREATE TABLESPACE big_ts DATAFILE 'xxx.dbf' SIZE 100M BLOCKSIZE 16384;
OLTP 主库标准块 8K;分析型大表放到 16K/32K 块表空间。
3.PostgreSQL / openGauss block_size
block_size编译 /initdb 初始化阶段固定,运行期间不可修改默认 8K,编译时指定
--with-blocksize=16设置 16KOLTP 保持 8K;数仓、批量分析业务初始化实例设置 16K。
⚠️调整数据块大小的代价(很多人踩坑)
不能热修改:大部分数据库实例创建后不能直接改块大小,需要新建实例,逻辑导出导入全量数据,停机成本高。
块调大不一定变快:随机点查业务,大 IO 块会读入大量不需要的数据,挤占 buffer pool,缓存命中率下降,读取变慢。
行大小限制:单条记录不能超过块大小,大文本、大 JSON 字段要注意。
备份恢复兼容:备份文件绑定块大小,不能直接恢复到块大小不同的实例。
什么时候不要优先动块大小?
不要上来就改块!块大小是底层架构参数,优先做上层调优,很多场景不需要改块:
缺少索引导致大量全表扫描 → 优先加索引
buffer_pool/shared_buffers 内存太小 → 调大数据库缓存
磁盘 IOPS、带宽瓶颈 → 升级存储
SQL 烂、返回大量无效行 → SQL 优化,分页、过滤
调优顺序:SQL 优化 → 索引优化 → 数据库缓存配置 → 存储硬件 → 最后才考虑修改数据块。

配套调参,块大小调整后配合优化读取速度
InnoDB:
innodb_buffer_pool_size,缓存尽量多热数据,减少磁盘读取;Oracle:
db_cache_size,匹配对应块大小的缓冲区;PG/openGauss:
shared_buffers,设置合适内存;IO 调度算法,存储块设备扇区对齐,4K 物理扇区与数据库块对齐,减少读写放大。
判断当前块大小 SQL
-- MySQL
show variables like 'innodb_page_size';
-- Oracle
select value from v$parameter where name='db_block_size';
-- PostgreSQL/openGauss
show block_size;
总结
随机读 OLTP 业务,优先保持默认 8K/16K,不要盲目调大;
批量扫描、报表、数仓场景,才适合调大数据库块;
块大小实例初始化确定,大部分数据库不能在线修改,变更成本很高;
优先优化索引、SQL、内存缓存,最后再考虑调整数据块。
本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。
原文链接
欢迎访问 小易撩挨踢