
MySQL学习笔记(Day018:磁盘)
MySQL学习
MySQL学习笔记(Day018:磁盘)
一. iostat
二. 磁盘
1. 磁盘的访问模式
2. 磁盘的分类
3. 提升IOPS性能的手段
4. RAID类别
5. RAID卡
6. 文件系统和操作系统
一. iostat
#
# 安装 iostat
#
shell> yum install sysstat
# debian 系: apt-get install sysstat
# 使用
shell> iostat -xm 3 # x表示显示扩展统计信息,m表示以兆为单位显示,3表示每隔3秒显示
# 输出如下:
avg-cpu: %user %nice %system %iowait %steal %idle
0.58 0.00 0.33 0.00 0.00 99.08
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda
0.00 0.00 0.00 0.67 0.00 0.00 8.00 0.00 2.00 0.00 2.00 1.00 0.07
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
CPU属性 说明
%user
CPU处在用户模式下的时间百分比
%nice
CPU处在带NICE值的用户模式下的时间百分比
%sys
CPU处在系统模式下的时间百分比
%iowait
CPU等待IO完成时间的百分比
%steal
管理程序维护另一个虚拟处理器时,虚拟CPU的无意的等待时间的百分比
%idle
闲置cpu的百分比
提示:
如果%iowait的值过高,表示硬盘存在I/O瓶颈;
如果%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
如果%idle值如果
持续 很低,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
Device属性 说明
rrqm/s
每秒进行 merge 的读操作数目
wrqm/s
每秒进行 merge 的写操作数目
r/s
每秒完成的读 I/O 设备次数
w/s
每秒完成的写 I/O 设备次数
rsec/s
每秒读扇区数
wsec/s
每秒写扇区数
rkB/s
每秒读K字节数
wkB/s
每秒写K字节数
avgrq-sz
平均每次设备I/O操作的数据大小 (扇区)
avgqu-sz
平均I/O队列长度
await
平均每次设备I/O操作的等待时间 (毫秒)
svctm
平均每次设备I/O操作的服务时间 (毫秒)
%util
一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
提示:
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
如果 await 远大于 svctm,说明I/O队列太长,io响应太慢,则需要进行必要优化。
如果avgqu-sz比较大,也表示有当量io在等待。
二. 磁盘
1. 磁盘的访问模式
• 顺序访问
◦ 顺序的访问磁盘上的块;
◦ 一般经过测试后,得到该值的单位是
MB/s ,表示为磁盘 带宽 ,普通硬盘在 50~ 100 MB/s
• 随机访问
◦ 随机的访问磁盘上的块
◦ 也可以用MB/s进行表示,但是通常使用
IOPS (每秒处理IO的能力),普通硬盘在 100-200 IOPS
拷贝文件属于顺序访问, 数据库 中访问数据属于 随机访问 。
数据库对数据的访问做了优化,把随机访问转成顺序访问。
2. 磁盘的分类
• HDD
◦ 盘片通过旋转,磁头进行定位,读取数据;
◦ 顺序性较好,随机性较差;
◦ 常见转速
◾ 笔记本硬盘:5400转/分钟;
◾ 桌面硬盘:7200转/分钟;
◾ 服务器硬盘:10000转/分钟、15000转/分钟;
◾ SATA:120 ~ 150 IOPS
◾ SAS :150 ~ 200 IOPS
从理论上讲,15000转/分钟,最高是 15000/60 约等于250IOPS
由于机械盘片需要旋转,转速太高无法很好的散热
如果一个HDD对4K的块做随机访问是0.8MB/s,可通过
0.8 *(1 / 4)= 200 或者 (0.8 * 1000) / 4=200 得到 IOPS ,但是这个值存在部分干扰因素,如cache等
• SSD
◦ 纯电设备
◦ 由FLash Memory组成
◦ 没有读写磁头
◦ MLC闪存颗粒对一般企业的业务够用。目前SLC闪存颗粒价格较贵
◦ IOPS高
◾ 50000+ IOPS
◾ 读写速度非对称 以
INTEL SSD DC-S3500为例子:
◾ Random 4KB3 Reads: Up to 75,000 IOPS
◾ Random 4KB Writes: Up to 11,500 IOPS
◾ Random 8KB3 Reads: Up to 47,500 IOPS
◾ Random 8KB Writes: Up to 5,500 IOPS
◾ 当写入数据时,要先擦除老数据,再写入新数据
◾ 擦除数据需要擦除整个区域(128K or 256K)一起擦除(自动把部分有用的数据挪到别的区域)
对比发现4K性能要优于8K的性能,几乎是2倍的差距,当然16K就更明显,所以当使用SSD时,建议数据库页大小设置成4K或者是8K,
innodb_page_size=8K )
上线以前,SSD需要经过严格的压力测试(一周时间),确保性能平稳
◦ Endurance Rating
◾ 表示该SSD的寿命是多少
◾ 比如450TBW,表示这个SSD可以反复写入的数据总量是450T(包括添加和更新)
◦ SSD线上参数设置
◾ 磁盘调度算法改为Deadline
echo deadline > /sys/block/sda/queue/scheduler # deadline适用于数据库,HDD也建议改成Deadline
◾ MySQL参数
◾ innodb_log_file_size=4G 该参数设置的尽可能大
◾
innodb_flush_neighbors=0
性能更平稳,且至少有15%的性能提升
◦ SSD 品牌推荐
MySQL DBA
学习笔记
----------------
美河学习在线
www.eimhe.com
仅学习参考
评论