>  기사  >  데이터 베이스  >  MySQL 벤치마크 테스트 및 sysbench 도구에 대한 자세한 설명

MySQL 벤치마크 테스트 및 sysbench 도구에 대한 자세한 설명

coldplay.xixi
coldplay.xixi앞으로
2020-09-11 17:30:422614검색

MySQL 벤치마크 테스트 및 sysbench 도구에 대한 자세한 설명

관련 학습 권장 사항: mysql 튜토리얼

벤치마크 테스트란 무엇입니까

데이터베이스 벤치마크 테스트는 데이터베이스 성능 지표에 대한 정량적이고 재현 가능하며 비교 가능한 테스트입니다. 벤치마크 테스트 및 스트레스 테스트 벤치마크 테스트는 시스템에 대한 스트레스 테스트로 이해될 수 있습니다. 그러나 벤치마크 테스트는 비즈니스 로직에 관심이 없으며 더 간단하고 직접적이며 테스트하기 쉽습니다. 데이터는 도구를 통해 생성될 수 있으며 실제 데이터가 필요하지 않습니다. 반면 스트레스 테스트는 일반적으로 비즈니스 로직(예: 장바구니 비즈니스)을 고려합니다. 실제 데이터가 필요합니다.

벤치마킹의 역할

대부분의 웹 애플리케이션에서 전체 시스템의 병목 현상은 데이터베이스 때문입니다. 네트워크 대역폭, 로드 밸런싱 노드, 애플리케이션 서버(CPU, 메모리, 하드 디스크 조명, 연결 수 포함)와 같은 웹 애플리케이션의 다른 요소입니다. 등), 캐시 등 수평 확장(흔히 Adding Machine이라고 함)을 통해 성능 향상을 쉽게 달성할 수 있습니다. MySQL의 경우 데이터 일관성 요구 사항으로 인해 사전 캐싱(Redis 등), 읽기-쓰기 분리 및 하위 작업을 통해 압력을 줄일 수 있지만 더 많은 시스템을 추가하여 데이터베이스에 데이터를 쓰는 압력을 분산할 수 없습니다. 데이터베이스와 테이블은 시스템의 다른 구성요소의 수평적 확장에 비해 너무 제한적입니다.

데이터베이스 벤치마크 테스트의 역할은 현재 구성(하드웨어 구성, OS, 데이터베이스 설정 등 포함)에서 데이터베이스 성능을 분석하여 MySQL의 성능 임계값을 찾아 실제 시스템 요구 사항에 따라 구성을 조정하는 것입니다. .

벤치마크 측정항목

일반적인 데이터베이스 지표는 다음과 같습니다:

TPS/QPS: 처리량을 측정합니다. 응답 시간: 평균 응답 시간, 최소 응답 시간, 최대 응답 시간, 시간 백분율 등을 포함합니다. 요청의 처음 95%에 대한 최대 응답 시간과 같이 시간 백분율 참조가 더 중요합니다. . 동시성: 동시에 처리되는 쿼리 요청 수입니다.

벤치마크 카테고리

MySQL 벤치마킹에는 두 가지 아이디어가 있습니다.

  • 전체 시스템에 대한 벤치마크 테스트: 브라우저, APP 또는 우편 배달부 및 기타 테스트 도구와 같은 http 요청을 통해 테스트합니다. 이 솔루션의 장점은 전체 시스템을 더 잘 대상으로 삼을 수 있고 테스트 결과가 더 정확하다는 것입니다. 단점은 설계가 복잡하고 구현하기 어렵다는 것입니다. Y m은 MySQL의 벤치마크 테스트에만 적용됩니다. 장점과 단점은 전체 시스템에 대한 테스트와 반대입니다.
  • MySQL을 벤치마킹할 때 일반적으로 mysqlslap, sysbench 등과 같은 특수 도구가 사용됩니다. 그중에서도 sysbench는 mysqlslap보다 더 다양하고 강력하며 Innodb에 더 적합합니다(많은 Innodb IO 기능을 시뮬레이션하기 때문에). 다음은 벤치마크 테스트를 위해 sysbench를 사용하는 방법을 설명합니다.
  • sysbench 소개

    sysbench는 멀티스레딩 및 다중 데이터베이스를 지원하는 크로스 플랫폼 벤치마크 테스트 도구입니다. 여기에는 주로 다음 테스트가 포함됩니다.

    1. CPU 성능 2. 디스크 IO 성능 3. 스케줄러 성능 4. 메모리 할당 및 전송 속도 5. POSIX 스레드 성능 6. 데이터베이스 성능(OLTP 벤치마크 테스트) 7. 이 글에서는 주로 데이터베이스 성능 테스트를 소개한다.

    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.安装成功
    [[email protected] sysbench-1.0]# sysbench --version
    sysbench 1.0.9

    sysbench 구문

    sysbench –help를 실행하면 sysbench의 자세한 사용법을 확인할 수 있습니다. sysbench의 기본 구문은 다음과 같습니다.

    sysbench [options]... [testname] [command]

    다음은 실제 사용 시 일반적으로 사용되는 매개변수 및 명령어에 대한 설명입니다.

    1.command command는 prepare, run, cleanup을 포함하여 sysbench에서 실행하는 명령입니다. 이름에서 알 수 있듯이 prepare는 테스트를 위해 미리 데이터를 준비하는 것이고, run은 정식 테스트를 실행하는 것이며 cleanup을 의미합니다. 테스트가 완료된 후 데이터베이스를 정리하는 것입니다.

    2.testname testname은 수행할 테스트를 지정합니다. 이전 버전의 sysbench에서는 새 버전에서 --test 매개변수를 통해 테스트 스크립트를 지정할 수 있습니다. 대신 --test를 사용하여 스크립트를 직접 지정할 수 있습니다.

    예를 들어 다음 두 가지 방법은 동일한 효과를 갖습니다.

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

    테스트 중에 사용되는 스크립트는 sysbench와 함께 제공되는 스크립트를 사용하거나 직접 개발할 수 있습니다. 대부분의 애플리케이션에서는 sysbench와 함께 제공되는 스크립트를 사용하는 것으로 충분합니다. sysbench 버전에 따라 lua 스크립트의 위치가 다를 수 있습니다. sysbench 경로에서 find 명령을 사용하여 oltp.lua를 검색할 수 있습니다. 추신: 대부분의 데이터 서비스는 oltp 유형입니다. oltp가 무엇인지 이해하지 못한다면 귀하의 데이터 서비스가 oltp 유형일 가능성이 높습니다.

    3.options sysbench에는 많은 매개변수가 있으며 가장 일반적으로 사용되는 매개변수는 다음과 같습니다. MySQL 연결 정보 매개변수:

    1.--mysql-host: MySQL 서버 호스트 이름, 기본값은 localhost입니다. 이 시스템에서 localhost를 사용하고 MySQL 서버에 연결할 수 없다는 오류가 보고되면 IP 주소를 변경할 수 있습니다. 당신의 기계. 2.--mysql-port: MySQL 서버 포트, 기본값 33063.--mysql-user: 사용자 이름 4.--mysql-password: 비밀번호

    MySQL 실행 매개변수:

        1.--oltp-test-mode:执行模式,包括simple、nontrx和complex,默认是complex。simple模式下只测试简单的查询;nontrx不仅测试查询,还测试插入更新等,但是不使用事务;complex模式下测试最全面,会测试增删改查,而且会使用事务。可以根据自己的需要选择测试模式。2.--oltp-tables-count:测试的表数量,根据实际情况选择3.--oltp-table-size:测试的表的大小,根据实际情况选择4.--threads:客户端的并发连接数5.--time:测试执行的时间,单位是秒,该值不要太短,可以选择1206.--report-interval:生成报告的时间间隔,单位是秒,如10

       sysbench使用举例

        在执行sysbench时,应该注意:

        1.尽量不要在MySQL服务器运行的机器上进行测试,一方面可能无法体现网络(哪怕是局域网)的影响,另一方面,sysbench的运行(尤其是设置的并发数较高时)会影响MySQL服务器的表现。2.可以逐步增加客户端的并发连接数(--thread参数),观察在连接数不同情况下,MySQL服务器的表现;如分别设置为10,20,50,100等。3.一般执行模式选择complex即可,如果需要特别测试服务器只读性能,或不使用事务时的性能,可以选择simple模式或nontrx模式。4.如果连续进行多次测试,注意确保之前测试的数据已经被清理干净。

       下面是sysbench使用的一个例子:

       1.准备数据

    sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 prepare

        其中,执行模式为complex,使用了10个表,每个表有10万条数据,客户端的并发线程数为10,执行时间为120秒,每10秒生成一次报告。 

       2.执行测试 将测试结果导出到文件中,便于后续分析。

    sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 run >> /home/test/mysysbench.log

       3.清理数据 执行完测试后,清理数据,否则后面的测试会受到影响。

    sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 cleanup

       测试结果

        测试结束后,查看输出文件,如下所示:   

    그중 우리에게 더 중요한 정보는 다음과 같습니다. 쿼리: 총 쿼리 수 및 qps 트랜잭션: 총 트랜잭션 수 및 tps 대기 시간-95번째 백분위수: 요청의 처음 95%에 대한 최대 응답 시간(이 경우에는 344밀리초인데 이 지연 시간은 매우 큽니다. 제가 사용하는 MySQL 서버의 성능이 매우 낮기 때문에 이 값은 공식 환경에서는 절대 받아들일 수 없습니다.

    제안

    다음은 sysbench 사용에 대한 몇 가지 제안 사항입니다.

    1. 테스트를 시작하기 전에 먼저 전체 시스템에 대한 벤치마크 테스트를 사용해야 하는지, MySQL에 대한 벤치마크 테스트를 사용해야 하는지, 아니면 둘 다를 사용해야 하는지 명확히 해야 합니다. 2. MySQL을 벤치마킹해야 하는 경우 정확성 요구 사항도 명확히 해야 합니다. 프로덕션 환경의 실제 데이터를 사용해야 하는지, 아니면 이를 생성하기 위해 도구를 사용해야 하는지는 구현하기가 더 번거롭습니다. 실제 데이터를 사용하려면 데이터의 일부가 아닌 전체 데이터를 사용해 보세요. 3. 벤치마크 테스트는 여러 번 수행되어야 의미가 있습니다. 4. 테스트할 때 마스터-슬레이브 동기화 상태에 주의해야 합니다. 5. 테스트는 다중 스레드 상황을 시뮬레이션해야 합니다. 단일 스레드 상황은 실제 효율성을 시뮬레이션할 수 없을 뿐만 아니라 차단 또는 교착 상태 상황도 시뮬레이션할 수 없습니다.

    프로그래밍에 대해 더 자세히 알고 싶다면 php training 칼럼을 주목해주세요!

위 내용은 MySQL 벤치마크 테스트 및 sysbench 도구에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 phpxs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제