惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
The Register - Security
The Register - Security
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The GitHub Blog
The GitHub Blog
博客园 - 司徒正美
罗磊的独立博客
U
Unit 42
S
SegmentFault 最新的问题
Y
Y Combinator Blog
博客园_首页
Hugging Face - Blog
Hugging Face - Blog
J
Java Code Geeks
Schneier on Security
Schneier on Security
Know Your Adversary
Know Your Adversary
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Simon Willison's Weblog
Simon Willison's Weblog
V
Vulnerabilities – Threatpost
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
The Hacker News
The Hacker News
博客园 - 叶小钗
C
Cybersecurity and Infrastructure Security Agency CISA
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Latest news
Latest news
L
Lohrmann on Cybersecurity
A
About on SuperTechFans
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
S
Securelist
A
Arctic Wolf
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Threatpost
Scott Helme
Scott Helme
博客园 - 聂微东
博客园 - 【当耐特】
T
Tenable Blog
I
Intezer
D
DataBreaches.Net
B
Blog RSS Feed
Security Latest
Security Latest
C
Cisco Blogs
T
Tor Project blog
N
Netflix TechBlog - Medium

博客园 - likingzi

RAID10和RAID5性能对比测试 迁移MySQL数据到Oracle实践记录 瀚高数据库不同版本对实例级用户的支持情况 使用benchmarksql测试数据库处理能力 BigCloud Enterprise Linux 8和Rocky Linux 8升级OpenSSH步骤 【翻译】凝视深渊:千核并发控制的评估 NFS使用TrueNAS SCALE的好处 linux 手动释放内存 linux8安装oracle 11g遇到的问题记录 ARM架构鲲鹏主机BClinux离线安装docker步骤 ORA-01658创建表或索引报错分析 MySQL PXC 集群死锁分析案例 记录一下oracle 19c的集群节点移除、新增操作 MySQL PXC集群多个节点同时大量并发update同一行 MongoDB集群同步 【最佳实践】MySQL数据库迁移到PXC集群 MySQL PXC集群配置IPv6 【实操记录】MySQL主从配置 【实操记录】MySQL二进制安装包部署 MongoDB分片+副本集高可用集群的启停步骤
数据库IO性能优化思考
likingzi · 2026-06-24 · via 博客园 - likingzi

一、数据与WAL分离

务必将WAL日志(pg_wal目录)放在独立的物理磁盘或高性能分区,隔离数据文件写入压力,对提升性能至关重要

二、文件系统优化

文件系统选择:优先选择 XFS,尤其是在大文件和高并发的数据库场景下,实测4K随机写性能比 ext4 提升约 25%。
文件系统4K对齐:创建时使用 mkfs.xfs -f -s size=4096 /dev/sdX 确保 4KiB 对齐,这在很多虚拟化环境中效果显著。
挂载参数优化:如果数据库是 MySQL/PostgreSQL,且使用 XFS 文件系统,可在挂载选项增加参数提升日志子系统吞吐量:
mount -t xfs -o remount,noatime,nodiratime,logbufs=8,logbsize=256k,inode64,commit=60 /dev/sdX /mnt/db
noatime,nodiratime:关闭访问时间记录,减少大量微小写 IO(高并发必备)
commit=60:延长文件系统刷盘间隔(默认 5 秒,降低频繁 fsync)
async:异步写,数据先落页缓存,再后台刷盘,大幅降低即时 IO 压力
ext4:barrier=0:关闭 ext4 写屏障(硬件有 RAID 卡 + 电池 BBU 才建议开,断电无风险)
xfs:logbufs=8,logbsize=256k 放大日志缓冲区,减少元数据刷盘

三、“磁盘 IO 调度算法”优化

Linux 不同内核 / 磁盘推荐调度器:
SSD 固态硬盘:推荐 mq-deadline / none(新版本内核)
HDD 机械硬盘:推荐 mq-deadline(老内核 deadline)
严禁 SSD 使用 cfq(完全不适合,队列堆积严重)

1、临时修改

查看当前调度器:cat /sys/block/sda/queue/scheduler
SSD 设置 mq-deadline:echo mq-deadline > /sys/block/sda/queue/scheduler
老SSD/高速盘设置 none:echo none > /sys/block/sda/queue/scheduler

2、永久生效

编辑内核启动参数 /etc/default/grub,添加:elevator=mq-deadline
然后更新 grub,并重启服务器:grub2-mkconfig -o /boot/grub2/grub.cfg

四、“块设备队列参数”优化

针对 IO 队列堆积,util 高的情况,可对快设备队列参数进行优化。
并发高时默认队列深度太小,请求排队:

  1. 调大队列深度(SSD建议 1024~2048,HDD 256~512)
    echo 1024 > /sys/block/sda/queue/nr_requests
  2. 预读大小(顺序IO调大,随机IO调小)
    随机IO(数据库/小文件):16384
    顺序IO(备份/日志):65536
    echo 16384 > /sys/block/sda/queue/read_ahead_kb
    ---以上临时生效,需持久化可使用 udev 规则