您现在的位置是:主页 > news > 自己做优惠劵网站/百度推广管家

自己做优惠劵网站/百度推广管家

admin2025/6/8 18:26:29news

简介自己做优惠劵网站,百度推广管家,网站建设与设计大作业,个人主页网页设计模板免费MySQL基准测试(Benchmark)更新日期:2019年07月10日IGNORECHANGE主题:MySQL基准测试的相关内容及可用的工具。什么是基准测试为什么要做基准测试MySQL基准测试中要注意的问题基准测试方案MySQL基准测试工具及使用方法什么是基准测试benchmark:…

自己做优惠劵网站,百度推广管家,网站建设与设计大作业,个人主页网页设计模板免费MySQL基准测试(Benchmark)更新日期:2019年07月10日IGNORECHANGE主题:MySQL基准测试的相关内容及可用的工具。什么是基准测试为什么要做基准测试MySQL基准测试中要注意的问题基准测试方案MySQL基准测试工具及使用方法什么是基准测试benchmark:…

MySQL基准测试(Benchmark)

更新日期:2019年07月10日

@IGNORECHANGE

主题:MySQL基准测试的相关内容及可用的工具。

什么是基准测试

为什么要做基准测试

MySQL基准测试中要注意的问题

基准测试方案

MySQL基准测试工具及使用方法

什么是基准测试

benchmark:基准,参照; 标准检查程序; 水准标。

在计算中,基准是运行计算机程序、一组程序或其他操作的行为,以便通过对其进行一些标准测试和试验来评估对象的相对性能。 “基准”一词也主要用于精心设计的基准程序本身。

基准测试通常与评估计算机硬件的性能特征相关联,例如CPU的浮点运算性能。但是有些技术也适用于软件。例如,针对编译器或数据库管理系统,来运行软件基准测试。

基准测试提供了一种比较不同子系统在不同芯片/系统架构上的性能的方法。

测试套件是一种旨在评估软件正确性的系统。

为什么要做基准测试

基准测试用于模拟组件或系统上特定类型的工作负载。基准测试可以解决一下问题,或者更多:

掌握系统:掌握系统的行为,在某些压力下系统会有什么表现。

问题重现:重现系统中的某些问题,从而可以解决这些问题。

发现瓶颈:模拟高负载,可以找出系统瓶颈所在。

新环境性能:新硬件的可靠性测试,测试系统在新的环境中的表现。

规划业务:评估系统能支持的业务能力。评估所需要加入的硬件容量、带宽等。

环境适应能力:测试出系统对不同数据分布情况的处理,或者随机并发下的表现。

证明:某个优化操作是否真的有效。硬件的升级、系统的升级或者软件的升级是否达到了预期的效果。

MySQL基准测试中要注意的问题

基准测试并不是那么容易就完成的,通常要进行若干轮的迭代,才能达到精准和有用。而且解释基准测试的数据也是比较复杂的。有如下的问题:

基准测试并不是真实的压力测试,基准测试的压力相对比较简单。但是,基准测试却可以针对某个问题进行分析,而压力测试中的变化因素过多,不利于问题分析。

基准测试要求尽快的完成,所以为了完成基准测试,我们会在给系统非常大的压力。

基准测试工具也会影响到准确性。

不能根据基准测试的结果做简单的推断。基准测试只是针对某个点进行了评估,但是随着系统的增长,系统的各个方面都在增长,所以不能根据某个基准测试结果做简单的推断。

基准测试要简单直接,以处理问题为主。再说一次:基准测试不是压力测试,基准测试只是为了发现某一个点。

数据集:为了结果能够尽可能的准确,测试所用的数据集应该尽可能的接近真实的数据集,如果可以,应该采用生产环境的数据快照。

基准测试方案

集成式(full-stack)

对整个系统进行测试。之所以要对整个系统做基准测试,有一下几点原因:

从整体来讲,MySQL只是整个应用的一部分,整体的性能才应该是关注的重点。

MySQL有时并不是性能的瓶颈,性能的瓶颈也可能出现在应用其他部分。

只有整体测试,才能发现各个部分之间缓存带来的影响。

整体性测试才能反映整个应用的性能,单组件测试是做不到这一点的。

整体测试的潜在问题:

应用整体的基准测试很难建立,甚至很难正确设置。

由此引发的问题就是无法正确的反映问题,从而导致了无法作出正确的决定。

单组件式(single-component)

对MySQL进行测试。有时候并不需要了解整个系统的性能,只需要对MySQL进行单独测试:

比较不同schema或者查询的性能。

针对应用中的某个MySQL相关问题进行测试。

测试何种指标

即要测试哪一方面。测试目标不同,则使用的方法、技术及工具都不相同。可测试的指标如下:

吞吐量

响应时间或者延迟

并发性

可扩展性

测试的指标必须是对与用户或者系统非常重要的指标。然后按照期望中的性能(并发量、响应时间),针对这些指标展开测试。不能盲目的测试,而忽略其他的指标。

MySQL基准测试方法

基准测试中常见的错误

数据集不相称:测试使用的数据集是真是情况的子集,很显然这样是测试不出问题的。

数据分布不相称:测试使用的数据分布与真是情况不匹配。

环境不匹配:测试环境与真实环境不匹配。比如:多用户对单用户、单服务器对分布式应用。

用户行为:测试模拟的用户行为与实际的用户行为不匹配。

单一:反复执行某一个操作,实际中的操作是不尽相同的。单一查询会导致缓存命中率很高。

忽略错误:当测试完成之后,首先要检查是否有错误产生。

忽略系统预热:不能在系统重启之后马上测试。比如:系统重启之后,还没有任何缓存。

使用默认配置

测试时间过短。

设计和规划基准测试(基准测试的方案)

标准的基准测试

专门设计的基准测试

专门设计的基准测试方案,需要一个迭代的过程。下面是要注意的一些问题:

首先要获得生产库中的数据快照,用于测试。

获取真实环境中的查询。为了获取准确的结果,应该采用生产服务器的一天的查询,或者比较有代表性的时间段。

记录不同级别的查询。如果是集成测试,可以记录HTTP请求,也可以打开MySQL的查询日志。然后在多线程环境下,重复执行这些查询。

写下详细的测试规划。

详细的记录测试结果,有助于数据的分析。

获取系统的性能和状态

执行基准测试的时候要尽可能多的收集系统信息。将相关的测试结果、配置文件、测试指标、脚本、相关的说明都保存起来。数据没有多余的。要收集的数据包括:IO、CPU、网络、SHOW GLOBAL STATUS计数器等。

获取准确的测试结果

如何保证基准测试的结果是准确的:

基准测试的选择是否正确?首否收集了相关的数据?是否采用了错误的测试标准?

每次测试中,系统的状态是否是相同的。比如:是否每次都进行了预热?数据集是否相同?数据的分布是否相同?

每次修改的参数应该尽可能的少。修改过多的参数,会给参照带来复杂性。一般情况下,都是通过迭代来逐步的修改参数。

运行基准测试

基准测试的运行时长

基准测试要运行足够长的时间。

如果要测试系统在稳定状态时的性能,当然要等系统稳定之后再进行测试和观察。

有时可能无法确定要运行多长时间,那么可以让测试一直运行,然后观察确认系统稳定。

如果运行时间过短,是无法得出正确结论的。

运行次数

基准测试的运行尽量脚本化。因为基准测试中有众多的步骤要,自动化可以减少遗漏,也避免了繁琐的操作。同时也有助于数据的整理。

基准测试一般需要运行多轮,直到得到确定的结果。

分析结果

脚本分析

得到结果之后,可以对数据展开分析了。可以使用sed或者awk写一些简单的脚本来分析数据。

用绘图分析结果

你可以使用gnuplot或者R绘图来显示数据。有些时候数据并不能直观的反映现象,而统计图却可以直观的反映问题。

MySQL基准测试工具及使用方法

mysqlslap

关于mysqlslap的使用方法查看另外一篇文章:《mysqlslap》

sysbench

sysbench的使用查看另外一篇文章:《sysbench》

MySQL Benchmark Suite (sql-bench)

Super Smack

Database Test Suite

Percona's TPCC-MySQL Tool

dbt2

MySQL BENCHMAEK()

不推荐,这是MySQL的内置函数,算不上真正的基准测试。

参考文献

《高性能MySQL》