欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识
原文出处: 编程迷思

作为一名靠山开拓,对数据库举办基准测试,以把握数据库的机能环境长短常须要的。本文先容了MySQL基准测试的根基观念,以及利用sysbench对MySQL举办基准测试的具体要领。

文章有疏漏之处,接待品评指正。

一、基准测试简介

1、什么是基准测试

数据库的基准测试是对数据库的机能指标举办定量的、可复现的、可比拟的测试。

基准测试与压力测试

基准测试可以领略为针对系统的一种压力测试。但基准测试不体贴业务逻辑,越发简朴、直接、易于测试,数据可以由东西生成,不要求真实;而压力测试一般思量业务逻辑(如购物车业务),要求真实的数据。

2、基准测试的浸染

对付大都Web应用,整个系统的瓶颈在于数据库;原因很简朴:Web应用中的其他因素,譬喻网络带宽、负载平衡节点、应用处事器(包罗CPU、内存、硬盘灯、毗连数等)、缓存,都很容易通进程度的扩展(俗称加呆板)来实现机能的提高。而对付MySQL,由于数据一致性的要求,无法通过增加呆板来分手向数据库写数据带来的压力;固然可以通过前置缓存(Redis等)、读写疏散、分库分表来减轻压力,可是与系统其它组件的程度扩展对比,受到了太多的限制。

而对数据库的基准测试的浸染,就是阐明在当前的设置下(包罗硬件设置、OS、数据库配置等),数据库的机能表示,从而找出MySQL的机能阈值,并按照实际系统的要求调解设置。

3、基准测试的指标

常见的数据库指标包罗:

  • TPS/QPS:权衡吞吐量。
  • 响应时间:包罗平均响应时间、最小响应时间、最大响应时间、时间百分比等,个中时间百分比参考意义较大,如前95%的请求的最大响应时间。。
  • 并发量:同时处理惩罚的查询请求的数量。
  • 4、基准测试的分类

    对MySQL的基准测试,有如下两种思路:

    (1)针对整个系统的基准测试:通过http请求举办测试,如通过欣赏器、APP或postman等测试东西。该方案的利益是可以或许更好的针对整个系统,测试功效越发精确;缺点是设计巨大实现坚苦。

    (2)只针对MySQL的基准测试:利益和缺点与针对整个系统的测试刚好相反。

    在针对MySQL举办基准测试时,一般利用专门的东西举办,昆山软件开发,譬喻mysqlslap、sysbench等。个中,sysbench比mysqlslap更通用、更强大,且更适合Innodb(因为模仿了很多Innodb的IO特性),下面先容利用sysbench举办基准测试的要领。

    二、sysbench

    1、sysbench简介

    sysbench是跨平台的基准测试东西,支持多线程,支持多种数据库;主要包罗以下几种测试:

  • cpu机能
  • 磁盘io机能
  • 调治措施机能
  • 内存分派及传输速度
  • POSIX线程机能
  • 数据库机能(OLTP基准测试)
  • 本文主要先容对数据库机能的测试。

    2、sysbench安装

    本文利用的情况时CentOS 6.5;在其他Linux系统上的安装要领大同小异。MySQL版本是5.6。

    (1)下载解压

    wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
    unzip sysbench-1.0.zip
    cd sysbench-1.0

    (2)安装依赖

    yum install automake libtool –y

    (3)安装

    安装之前,确保位于之前解压的sysbench目次中。

    ./autogen.sh
    ./configure
    export LD_LIBRARY_PATH=/usr/local/mysql/include #这里换成呆板中mysql路径下的include
    make
    make install

    (4)安装乐成

    [root@test sysbench-1.0]# sysbench --version
    sysbench 1.0.9

    3、sysbench语法

    执行sysbench –help,可以看到sysbench的具体利用要领。

    sysbench的根基语法如下:

    sysbench [options]… [testname] [command]

    下面说明实际利用中,常用的参数和呼吁。

    (1)command

    command是sysbench要执行的呼吁,包罗prepare、run和cleanup,顾名思义,prepare是为测试提前筹备数据,run是执行正式的测试,cleanup是在测试完成后对数据库举办清理。

    (2)testname

    testname指定了要举办的测试,在老版本的sysbench中,可以通过–test参数指定测试的剧本;而在新版本中,–test参数已经声明为废弃,可以不利用–test,而是直接指定剧本。

    譬喻,如下两种要领结果是一样的:

    sysbench --test=./tests/include/oltp_legacy/oltp.lua
    sysbench ./tests/include/oltp_legacy/oltp.lua

    测试时利用的剧本为lua剧本,可以利用sysbench自带剧本,也可以本身开拓。对付大大都应用,利用sysbench自带的剧本就足够了。差异版本的sysbench中,lua剧本的位置大概差异,可以本身在sysbench路径下利用find呼吁搜索oltp.lua。P.S.:大大都数据处事都是oltp范例的,假如你不相识什么是oltp,那么或许率你的数据处事就是oltp范例的。

    (3)options

    sysbench的参数有许多,个中较量常用的包罗: