PostgreSQL 测试磁盘性能

安装

bash 复制代码
sudo yum install epel-release -y
sudo yum install fio -y

适合pg的磁盘测试

这个配置模拟的是:

  • PostgreSQL 对数据库文件的随机 8KB 读取
  • 多并发(4 jobs)、深队列(iodepth 32)
  • 绕过操作系统缓存(--direct=1)
bash 复制代码
fio --name=pg-test \
    --filename=/tmp/fio.test \
    --rw=randread \
    --bs=8k \
    --iodepth=32 \
    --numjobs=4 \
    --time_based \
    --runtime=60s \
    --ioengine=libaio \
    --direct=1
    

参数解读

  • -rw=read

    顺序读,模拟全表扫描时从头到尾顺序读取数据文件。

  • -bs=1M

    PostgreSQL 顺序扫描时一般会以 8KB 页为基本单位,但为了减少系统调用,底层往往会成批读取。这里用 1MB 可以更接近数据库批量读取的效果(你可以改成 128k 或 512k 来更精细模拟)。

  • -iodepth=1

    顺序扫描基本是串行提交 I/O,请求深度低。

  • -numjobs=1

    单进程读取,类似单个 SQL 进程扫描表。

  • -size=10G

    模拟表数据大小,可以改成你实际数据库大表的大小。

  • -direct=1

    绕过文件系统缓存,直接测试磁盘性能(PostgreSQL 实际运行会受 OS 缓存影响,这里更纯粹看存储性能)。

  • -time_based --runtime=60s

    运行固定时间,而不是必须读完整个文件。

模拟扫全表

bash 复制代码
fio --name=pg-seqscan \
    --filename=/tmp/fio.seqscan \
    --rw=read \
    --bs=1M \
    --iodepth=1 \
    --numjobs=1 \
    --time_based \
    --runtime=60s \
    --ioengine=libaio \
    --direct=1 \
    --size=10G

参数解读

参数 含义
--name=randread 测试任务名称,随便取名
--ioengine=libaio 使用 Linux AIO 异步 IO 引擎(对真实负载较贴近)
--rw=randread 模拟 随机读取(不涉及写入)
--bs=4k 每个 IO 请求块大小为 4KB(典型数据库页大小)
--numjobs=8 启动 8 个线程/并发任务
--iodepth=32 每个线程最多同时提交 32 个 IO 请求(最大并发深度)
--runtime=30s 总运行时间为 30 秒
--size=1G 每个线程测试 1GB 的文件大小(并发共享)
--filename=/tmp/fio.test 测试使用 /tmp/fio.test 文件(你可以指定挂载盘)
--direct=1 绕过文件系统缓存,直接访问磁盘,反映真实设备性能
相关推荐
洛克大航海1 天前
解锁 PySpark SQL 的强大功能:有关 App Store 数据的端到端教程
linux·数据库·sql·pyspark sql
XueminXu1 天前
ClickHouse数据库的表引擎
数据库·clickhouse·log·表引擎·mergetree·special·integrations
冒泡的肥皂1 天前
MVCC初学demo(二
数据库·后端·mysql
代码程序猿RIP1 天前
【Redis 】Redis 详解以及安装教程
数据库·etcd
小生凡一1 天前
redis 大key、热key优化技巧|空间存储优化|调优技巧(一)
数据库·redis·缓存
oe10191 天前
好文与笔记分享 A Survey of Context Engineering for Large Language Models(上)
数据库·笔记·语言模型·agent·上下文工程
小马哥编程1 天前
【软考架构】案例分析-对比MySQL查询缓存与Memcached
java·数据库·mysql·缓存·架构·memcached
一 乐1 天前
高校后勤报修系统|物业管理|基于SprinBoot+vue的高校后勤报修系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·毕设
折翼的恶魔1 天前
SQL190 0级用户高难度试卷的平均用时和平均得分
java·数据库
煎蛋学姐1 天前
SSM基于框架在线电影评论投票系统3gr0f(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·系统开发·ssm 框架·在线电影评论投票系统