性能测试 —— MySQL性能测试方案设计!

01、慢查询

查看是否开启慢查询

|---------------------------------------|
| mysql> show variables like '%slow%'; |

如图所示:

  • 系统变量log_slow_admin_statements

    表示是否将慢管理语句例如ANALYZE TABLE和ALTER TABLE等记入慢查询日志

  • 启用log_slow_extra系统变量

    (从MySQL 8.0.14开始提供)将导致服务器将几个额外字段写入日志

  • Log_slow_slave_statements

    从库默认是不写入慢查询的,开启之后从库慢查询日志写入

  • slow_query_log

    这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句

开启慢查询方法:

|----------------------------------------|
| mysql> set global slow_query_log='ON' |

  • slow_query_log_file

    记录日志的文件名

  • slow_launch_time=#

    表示如果建立线程花费了比这个值更长的时间,slow_launch_threads 计数器将增加

修改慢查询时间为5

|----------------------------------------------------------------------------|
| Mysql > set long_query_time = 5; mysql>show global status like '%slow%'; |

如图所示:

02、Explain

可以查看sql语句的具体执行情况,索引使用情况

|-----------------------------------------|
| mysql> explain select * from servers; |

03

profiling

分析查询 sql执行消耗系统资源情况

|-----------------------------|
| mysql> select @@profiling; |

如图所示:

打开功能:

|---------------------------------------------------|
| Mysql > set profiling = 1; Select * from user ; |

如图所示:

04

其它mysql测试工具

  • mysqlslap (mysql自带性能测试工具)

mysqlslap可以模拟服务器的负载,并输出计时信息。它包含在MySQL 5.1 的发行包中,应该在MySQL 4.1或者更新的版本中都可以使用。测试时可以执行并发连接数,并指定SQL 语句(可以在命令行上执行,也可以把SQL 语句写入到参数文件中)。如果没有指定SQL 语句,mysqlslap 会自动生成查询schema 的SELECT 语句。

  • MySQL Benchmark Suite (sql-bench)

在MySQL 的发行包中也提供了一款自己的基准测试套件,可以用于在不同数据库服务器上进行比较测试。它是单线程的,主要用于测试服务器执行查询的速度。结果会显示哪种类型的操作在服务器上执行得更快。

这个测试套件的主要好处是**包含了大量预定义的测试,**容易使用,所以可以很轻松地用于比较不同存储引擎或者不同配置的性能测试。其也可以用于高层次测试,比较两个服务器的总体性能。当然也可以只执行预定义测试的子集。这些测试大部分是CPU 密集型的,但也有些短时间的测试需要大量的磁盘I/O 操作。

这个套件的最大缺点主要有:它是单用户模式的,测试的数据集很小且用户无法使用指定的数据,并且同一个测试多次运行的结果可能会相差很大。因为是单线程且串行执行的,所以无法测试多CPU 的能力,只能用于比较单CPU 服务器的性能差别。使用这个套件测试数据库服务器还需要Perl 和BDB 的支持

  • Super Smack

Super Smack是一款用于MySQL 和PostgreSQL的基准测试工具,可以提供压力测试和负载生成。这是一个复杂而强大的工具,可以模拟多用户访问,可以加载测试数据到数据库,并支持使用随机数据填充测试表。测试定义在"smack"文件中,smack 文件使用一种简单的语法定义测试的客户端、表、查询等测试要素。

  • Database Test Suite

Database Test Suite 是由开源软件开发实验室(OSDL,Open Source DevelopmentLabs)设计的,发布在SourceForge 网站上,这是一款类似某些工业标准测试的测试工具集

例如由事务处理性能委员会(TPC,Transaction Processing Performance Council)制定的各种标准。特别值得一提的是,其中的dbt2 就是一款免费的TPC-C OLTP 测试工具(未认证)。之前本书作者经常使用该工具,不过现在已经使用自己研发的专用于MySQL 的测试工具替代了。

  • Percona's TPCC-MySQL Tool

我们开发了一个类似 TPC-C 的基准测试工具集,其中有部分是专门为MySQL 测试开发的。在评估大压力下MySQL 的一些行为时,我们经常会利用这个工具进行测试(简单的测试,一般会采用sysbench 替代),在源码库中有一个简单的文档说明。

  • sysbench

sysbench是一款多线程系统压测工具。它可以根据影响数据库服务器性能的各种因素来评估系统的性能。

**例如,**可以用来测试文件I/O、操作系统调度器、内存分配和传输速度、POSIX 线程,以及数据库服务器等。sysbench 支持Lua 脚本语言,Lua 对于各种测试场景的设置可以非常灵活。

sysbench 是我们非常喜欢的一种全能测试工具,支持MySQL、操作系统和硬件的硬件测试。(节选自《高性能MySQL》)

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

相关推荐
身如柳絮随风扬3 小时前
MySQL核心知识
数据库·mysql
551只玄猫3 小时前
【数据库原理 实验报告1】创建和管理数据库
数据库·sql·学习·mysql·课程设计·实验报告·数据库原理
q5431470874 小时前
MySQL SQL100道基础练习题
数据库·mysql
zhoupenghui1684 小时前
mysql 中如果条件where中有or,则要求or两边的字段都必须有索引,否则不能用到索引, 为什么?
数据库·mysql·索引
eggwyw5 小时前
完美解决phpstudy安装后mysql无法启动
数据库·mysql
java修仙传6 小时前
MySQL 事务隔离级别详解
数据库·mysql·oracle
Irissgwe6 小时前
MySQL存储过程和触发器专题
数据库·mysql·oracle
123过去7 小时前
sidguess使用教程
测试工具
skiy8 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
创世宇图8 小时前
Alibaba Cloud Linux 安装生产环境-mysql
linux·mysql