MySQL 数据库服务器,以下针对单块480G SSD、接RAID卡240G SSD* 2 RAID0,以及与普通硬盘SATA硬盘以及SAS(raid10)做个比较:


  480G SSD: INTEL SSDSC2BP480G4


  SATA:WD6401AALS-00J7B1


  240*2 SSD RAID0:  INTEL SSDSC2BP240410BTJR408108F5240AGN    RAID卡: LSI MegaRAID SAS 9271-4i


  300G*4 SAS RAID10: SEAGATE ST3146855SS


测试目的:


  1、测试单块480G SSD硬盘直连主板,与2块240G SSD 接RAID卡做RAID0 性能比较


  2、测试单块SSD与SATA以及SAS(RAD10)的性能比较


测试方法:


  1、通过sysbench mark基准测试工具对文件读写IO进行测试;


  2、准备样本数据100G,分16个文件;


  3、分别基于4KB,16KB 两个block size进行读写测试;


  4、共进行随机读、随机写、随机读写、顺序读、顺序写、顺序读写6种Case测试;


  5、测试同时加载16个线程,最大执行时间180秒,最大请求100000次;


测试脚本:


#!/bin/sh      


       device=$1      


       log_file=fileio.log      


       Usage() {      


       echo "basename $0 [Device Directory]"      


       exit 0      


       }      


       if [ -z "$*" ] || [ $# -ne 1 ]; then      


       Usage      


       fi      


       cd $device      


       for blksize in 4096 16384; do      


       ##prepare      


       /usr/local/sysbench/bin/sysbench --test=fileio --file-num=16 --file-total-size=100G prepare      


       for mode in rndrd rndwr rndrw seqrd seqwr seqrewr; do      


       # for mode in seqrewr; do      


       echo "----$device $blksize $mode----" >> $log_file      


       #run      


       /usr/local/sysbench/bin/sysbench --test=fileio --file-num=16 --file-total-size=100G --file-test-mode=$mode --max-time=180 --max-requests=100000 --num-t      


       hreads=16 --init-rng=on --file-extra-flags=direct --file-fsync-freq=0 --file-block-size=$blksize run >> $log_file 2>&1      


       done      


       #cleanup      


       /usr/local/sysbench/bin/sysbench --test=fileio --file-total-size=100G cleanup      


       done


  测试结果1:单块480G SSD与2块240 SSD(RAID0)性能比较


  1、随机读


  4KB Block随机读:两者相当                     16KB Block随机读:240G*2 SSD(RAID0)相对较优;


  2、随机写


  4KB Block随机写:480G SSD(Local)较优          16KB Block随机写:两者相当;


  3、随机读写


  4KB Block随机读写: 480G SSD(Local)较优        16KB Block随机读写:240G*2 SSD(RAID0)相对较优


  4、顺序读


  4KB Block顺序读: 240G*2 SSD(RAID0)较优          16KB Block顺序读:240G*2 SSD(RAID0)较优


  5、顺序写


  4KB Block顺序写:480G SSD(Local)较优          16KB Block顺序写: 480G SSD(Local)较优


  6、顺序读写


  4KB Block顺序读写:480G SSD(Local)较优        16KB Block顺序写:480G SSD(Local)较优


  测试结论1:(For 单块SSD与SSD(raid0)比较)


  1、总体IO读方面:240G*2 SSD (RAID0)在读性能方面相对较优,但只是略微高于480G SSD(Local),远远未达到2倍的效果;


  2、总体IO写方面:480G SSD(Local) 各种写情况都高于240G*2 SSD (RAID0) ;

 测试结果2:(For SSD与SATA以及SAS(RAID10)的性能测试对比)



  (由于mysql innodb datafile 每个PAGE Size默认为16KB,这里主要看16KB Block Size的性能对比结果)



SSD硬盘性能测试比较_性能比较



  测试结论2:



  1、可见SSD在随机读、写等方面等有非常大的优势,顺序读和顺序写方面,与SATA的优势不明显,但仍远远大于SAS(RAID10)的性能;



  2、虽在Sequential Read&Write of IOPS方面 SATA略优于SSD,但数据库很少有这种应用。



  测试结果数据统计:



SSD硬盘性能测试比较_性能比较_02



SSD硬盘性能测试比较_SAS_03



  以上主要测试硬盘在IO方面的性能对比结果,目前暂未测试基于MySQL QPS/TPS的测试结果。