标签:iops pci 需要 申请 闪存 最大 索引 如何 mysq
磁盘性能和磁盘的访问模式有关
Sequential access
Random access
上面说的顺序和随机是逻辑上的,大多时候做不到完全顺序
数据库不是连续块的申请空间,是一次申请固定块大小的空间,在这一个块里面的数据是连续的
随机访问的性能叫IOPS,顺序访问的性能叫吞吐率
为什么数据库比较多的是随机访问?
B+ tree索引定位数据是比较随机的,所以数据库最看重的就是随机IO,也就是IOPS,顺序的话通常就是扫描了,两张表做join的话比的就是顺序的性能,MySQL通常用在大并发,小事务的OLTP场景
知道转速,对应的IOPS也出来了
IOPS=转速/60
带宽怎么转换为IOPS
每做一次io操作,io的大小是不一定的,比如4k的操作,通常厂商都给的数据都是4k大小的io,注意,MySQL中每个IO的大小是16k,即每个页的大小,所以和厂商给的性能数据相比会有所下降
48M的宽带算IOPS就是,1M/4k*48=12288
如何提升HDD的IOPS性能
做raid
功耗非常高
通过购买共享存储
价格昂贵
共享存储,做高可用很方便,但是单点故障太坑爹,就像坐飞机,一般没问题,出了问题基本上就是死
然而提升都是非常有限的
tips:
通常来说数据库做raid10,性能和可靠性都要有保障
SSD与数据库优化
1、磁盘调度算法设置为deadline或者noop,在ssd上,这个调整性能至少提升百分之七十,甚至多倍,现在CentOS7默认磁盘调度算法已经是deadline了而不是cfq
cat /sys/block/vda/queue/scheduler
echo deadline > /sys/block/vda/queue/scheduler
上面这个可以作一个模板,规定,HDD也因该这么设置,只是性能提升没这么大
2、InnoDB参数调整
InnoDB存储引擎参数设置
innodb_flush_neighbors = 0 -- 默认1,平缓刷新的,默认只刷脏页,不会将脏页所在的整个区刷新,把这个设为0,重做日志大小足够大,数据库测试时性能比较平稳,还有一定的提升
innodb_log_file_size = 4G -- 默认128M,高端设备设置8G和16G都不为过,MySQL5.5最大只能设1.9G,无限接近于2G
innodb_io_capacity 设置为存储性能的一半
修改之后重启,等待时间比较长,是数据库在做扩展
上面两个配置不对性能抖动比较厉害,设置后性能平稳且提升百分之15
3、SSD的选择——PCIE or SATA/SAS?
SATA/SAS与PCIE的性能差距逐渐减小,PCIE快非常多,甚至达到50w,100wIOPS,没什么上限
PCIE的性能很少有应用可以完全使用,优先选择SATA/SAS接口的SSD
数据库的瓶颈已经不在磁盘上了
SSD品牌推荐:Intel、FusinIO、宝存
标签:iops pci 需要 申请 闪存 最大 索引 如何 mysq
原文地址:https://www.cnblogs.com/---wunian/p/9206849.html