如何从入门到自定义sysbench测试项进行MySQL性能压测?

摘要:sysbench是一个开源的、基于LuaJIT(LuaJIT 是 Lua 的即时编译器,可将代码直接翻译成机器码,性能比原生 lua 要高) 的、可自定义脚本的多线程基准测试工具,也是目前用得最多的 MySQL 性
sysbench是一个开源的、基于LuaJIT(LuaJIT 是 Lua 的即时编译器,可将代码直接翻译成机器码,性能比原生 lua 要高)的、可自定义脚本的多线程基准测试工具,也是目前用得最多的 MySQL 性能压测工具。 基于 sysbench,我们可以对比 MySQL 在不同版本、不同硬件配置、不同参数(操作系统和数据库)下的性能差异。 下面会从 sysbench 的基本用法出发,逐渐延伸到 sysbench 的一些高级玩法,譬如如何阅读自带的测试脚本、如何自定义测试项等。除此之外,使用 sysbench 对 CPU 进行测试,网上很多资料都语焉不详,甚至是错误的,所以这次也会从源码的角度分析 CPU 测试的实现逻辑及 --cpu-max-prime 选项的具体含义。 本文主要包括以下几部分: 安装sysbench sysbench用法讲解 对MySQL进行基准测试的基本步骤 如何分析MySQL基准测试结果 如何使用sysbench对服务器进行测试 MySQL常见测试场景及对应的 SQL 语句 如何自定义sysbench测试脚本 安装 sysbench 下面是 sysbench 源码包的安装步骤。 #yum-yinstallmakeautomakelibtoolpkgconfiglibaio-developenssl-develmysql-devel #cd/usr/src/ #wgethttps://github.com/akopytov/sysbench/archive/refs/tags/1.0.20.tar.gz #tarxvf1.0.20.tar.gz #cdsysbench-1.0.20/ #./autogen.sh #./configure #make-j #makeinstall 安装完成后,压测脚本默认会安装在/usr/local/share/sysbench目录下。 我们看看该目录的内容。 #ls/usr/local/share/sysbench/ bulk_insert.luaoltp_insert.luaoltp_read_write.luaoltp_write_only.luatests oltp_common.luaoltp_point_select.luaoltp_update_index.luaselect_random_points.lua oltp_delete.luaoltp_read_only.luaoltp_update_non_index.luaselect_random_ranges.lua 除了oltp_common.lua是个公共模块,其它每个 lua 脚本都对应一个测试场景。 sysbench 用法讲解 sysbench 命令语法如下: sysbench[options]...[testname][command] 命令中的testname是测试项名称。sysbench 支持的测试项包括: *.lua:数据库性能基准测试。 fileio:磁盘 IO 基准测试。 cpu:CPU 性能基准测试。 memory:内存访问基准测试。 threads:基于线程的调度程序基准测试。 mutex:POSIX 互斥量基准测试。 command是 sysbench 要执行的命令,支持的选项有:prepare,prewarm,run,cleanup,help。注意,不是所有的测试项都支持这些选项。 options是配置项。sysbench 中的配置项主要包括以下两部分: 1. 通用配置项。这部分配置项可通过sysbench --help查看。例如, #sysbench--help ... Generaloptions: --threads=Nnumberofthreadstouse[1] --events=Nlimitfortotalnumberofevents[0] --time=Nlimitfortotalexecutiontimeinseconds[10] ... 2. 测试项相关的配置项。各个测试项支持的配置项可通过sysbench testname help查看。
阅读全文