mysql基准测试总结 一

     先说下,mysql进行基准测试的工具及安装、基本使用。

     mysql的基准测试工具有很多,如mysqlslap、sysbench、Super Smack等;我们使用sysbench进行测试之旅。

    sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL;

    1、安装sysbench

         下载sysbench(0.4.12):地址:http://sourceforge.net/projects/sysbench/ 

# 安装
>>> tar -zxvf sysbench-0.4.12.tar.gz
>>> cd sysbench-0.4.12
>>> ./autogen.sh
>>> vim aclocal.m4
    LIBTOOL='$(SHELL) 自己的libool的路径'   # 修改成  /usr/bin/libtool
    AC_SUBST(LIBTOOL)dnl
>>> ./configure --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib
>>> make
>>> make install

    可能遇到的错误:

   a、cannot find -lmysqlclient_r

/usr/bin/ld: cannot find -lmysqlclient_r
collect2: ld returned 1 exit status
make[2]: *** [sysbench] Error 1

   解决办法: find / -name *mysqlclient_r*

                    ln -s /usr/local/mysql/lib/libmysqlclient_r.so /usr/lib/libmysqlclient.so

   b、别人遇到的问题,在这里记录一下

./sysbench: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
Solution:
export LD_LIBRARY_PATH=/usr/local/mysql/lib
或者添加到/etc/profile里.
 ./configure --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/
make && make install

  2、进行测试

    a、基本语法

    cpu性能测试

>>> sysbench --test=cpu --cpu-max-prime=20000 run

    结果:

    mysql基准测试总结 一_第1张图片

    线程测试

sysbench --test=threads --num-threads=64 --thread-yields=100 --thread-locks=2 run

   结果:

   mysql基准测试总结 一_第2张图片

  文件io

>>> sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw prepare
>>> sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw run
>>> sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw cleanup

  内存测试

>>> sysbench --test=memory --memory-block-size=8k --memory-total-size=1G

  oltp测试

>>> sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 --mysql-socket=/tmp/mysql.sock --mysql-user=test --mysql-host=localhost --mysql-password=test --mysql-db=test prepare
>>> sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 --mysql-socket=/tmp/mysql.sock --mysql-user=test --mysql-host=localhost --mysql-password=test --mysql-db=test run
>>> sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 --mysql-socket=/tmp/mysql.sock --mysql-user=test --mysql-host=localhost --mysql-password=test --mysql-db=test cleanup


  Copy:

对于MySQL的性能分析,在服务器内部有很多很好的命令来供我们使用,比如show status/show processlist/show innodb status
使用show status 中,“Select%”一般指不同类型的连接执行计划,“Handler%”一般指存储引擎的相关信息,“Sort%”一般指排序的相关信息,“Created%”一般指新建临时表的相关信息。一般也可以使用mysqlreport对信息进行统计打印。而show processlist 也打印出了相关参数,此时可以使用Innotop代替进行方便分析,或者使用mytop来分析。如果是在回话中使用,则需要添加session 参数,即show session status; 使用show processlist 可以定位到mysql连接和进程故障,这一功能一般需要和prep netstat psof ps等联合使用。使用tcpdump工具可以抓包分析流量。innotop 和tcpdump的强大功能以后再分析。


你可能感兴趣的:(mysql基准测试总结 一)