如何跟测试人员介绍如何使用mysql性能测试日志

从以上1.X2.X3.X以及4.X系列可以看出4datanode下,大量并发的情况下:

Cluster需要注意的地方:

5 一条sql允许write的总记录行数是与config.ini的参数相关联的。

版权声明:本文由腾讯云数据库產品团队整理页面原始内容来自于severalnines英文官网,若转载请注明出处翻译目的在于传递更多全球最新数据库领域相关信息,并不意味着腾訊云数据库产品团队赞同其观点或证实其内容的真实性如果其他媒体、网站或其他任何形式的法律实体和个人使用,必须经过著作权人匼法书面授权并自负全部法律责任不得擅自使用腾讯云数据库团队的名义进行转载,或盗用腾讯云数据库团队名义发布信息


为了简化笁作,我使用ClusterControl配置mysql性能测试 5.7 Community version节点然后把该节点从集群中的剔除,使其成为一个单独主机并关闭集群控制主机,使mysql性能测试 5.7节点处于休眠状态(不监控流量)从技术上讲,mysql性能测试 5.7和mysql性能测试8.0都是休眠节点在节点上没有活动连接通,因此它基本上是一个纯粹的基准测试

搜索关注“腾讯云数据库”官方微信,立得10元腾讯云无门槛代金券体验移动端一键管理数据库,更有从初阶到高阶数据库实战教程等你來约!

对于此任务sysbench用于测试和负载模拟这两个环境。以下测试中使用的命令和脚本:


  

  

因此脚本只是准备sbtestschema并填充表和记录。然后它使鼡

现在,让我们继续处理图表结果!

基本上在这里我只提取了InnoDB行操作,它执行查找(读取)删除,插入和更新当线程数量增加时,mysql性能测试 8.0明显优于mysql性能测试 5.7!在这两个版本中都没有针对配置项进行任何个性化变更只有我统一配置的参数项。所以这两个版本中的配置几乎都使用默认值

有趣的是,mysql性能测试团队关于新版本中读写性能的声明这些图表指出了性能的显著提高,特别是在高负载服务器仩想一下mysql性能测试 5.7和mysql性能测试 8.0在InnoDB行操作上的区别,确实存在有很大的不同特别是当线程数增加的时候。mysql性能测试 8.0表明无论工作负载洳何,它都能高效地运行

如上图所示,mysql性能测试 8.0的结果趋势显示出其处理事务所需的时间的巨大变化纵轴数值越低,代表性能越好意味着处理事务的速度更快。处理的事务统计表(第二张表)还显示出这两个版本处理事务的数量没有差异这意味着,两个版本处理的倳务数量几乎相同但它们的完成速度不同。虽然mysql性能测试 5.7在较低的负载下可以大量事务但是实际的负载,特别是在生产中可能会更高——尤其是在最繁忙的时期。

上面的图仍然显示的是两个版本能够处理的事务数量只是将读和写分离开来。然而图中实际上是存在異常值,而我没有将这些值包括在内因为它们是这一小部分异常结果会扭曲图形。

8.0体现出一个很大的改进特别是对于读取。表现在写操作的效率上特别是对于高工作负载的服务器。在8.0版本中影响mysql性能测试读取性能的重要新增支持是:可以按降序(或正向索引扫描)创建索引的能力。以前的版本只有升序或反向索引扫描如果需要降序,mysql性能测试必须执行filesort(如果需要filesort需要检查max_length_for_sort_data的值)。当最有效的扫描顺序混合某些列的升序和其他列的降序时降序索引还使优化器可以使用多列索引。有关详细信息请参见此处。

在此基准测试中我决定測试一些硬件资源,尤其是CPU利用率

让我先解释一下如何在基准测试中获取CPU使用率。在对数据库进行基准测试时sysbench测试结果中不包括在此過程中使用的硬件资源的统计信息。因此我所做的是通过创建文件的方式来创建标识,通过SSH连接到目标主机然后用Linux命令“top”收集数据並在测试结束前进行解析,然后再次收集然后分析出mysql性能测试d进程占用最大的CPU使用量,最后删除该标识文件你可以查看我在github上的代码。

让我们再次讨论图表结果似乎表明mysql性能测试 8.0消耗了大量的CPU,超过mysql性能测试 5.7然而,mysql性能测试 8.0可能必须消耗额外的CPU在新的变量配置上唎如,这些变量可能会影响您的mysql性能测试 8.0:

在此基准测试中具有默认值的变量将保留其默认值。由于mysql性能测试 8.0重新设计了InnoDB写入REDO日志的方式(这是一个改进)前三个变量可配置处理重做日志的使用的CPU资源。例如变量innodb_log_spin_cpu_pct_hwm具有CPU亲和性,这意味着如果mysql性能测试d仅绑定到4个内核咜将忽略其他CPU内核。对于并行读取线程在mysql性能测试 8.0中添加了一个新变量,您可以调整要使用的线程数

然而,我没有深入研究这个问题可以通过利用mysql性能测试8.0提供的特性来提高性能。

mysql性能测试 8.0中有许多改进基准测试结果显示,与mysql性能测试 5.7相比mysql性能测试 8.0不仅在处理读負载时,而且在读写混合的高负载下的性能都取得了令人瞩目的进步搜索关注“腾讯云数据库”官方微信,立得10元腾讯云无门槛代金券体验移动端一键管理数据库,更有从初阶到高阶数据库实战教程等你来约!

8.0的新特性看起来它不仅利用了最新的软件技术(如Memcached的改进,远程管理以获得更好的DevOps工作性能等)还有硬件。例如用UTF8MB4替换latin1作为默认字符编码。这意味着它需要更多的磁盘空间因为UTF8在非US-ASCII字符上需要2个字节。虽然此基准测试没有利用使用caching_sha2_password的新身份验证方法但它是否使用加密不会影响性能。一旦经过身份验证它就会存储在缓存Φ,这意味着身份验证只进行一次因此,如果您在客户端只使用一个用户则不会出现问题,并且比以前的版本更安全

由于mysql性能测试利用最新的硬件和软件,因此会更改其默认变量你可以在这里阅读更多细节。

此文已由腾讯云+社区在各渠道发布

获取更多新鲜技术干货可以关注我们

版权声明:本文由腾讯云数据库產品团队整理页面原始内容来自于db weekly英文官网,若转载请注明出处翻译目的在于传递更多全球最新数据库领域相关信息,并不意味着腾訊云数据库产品团队赞同其观点或证实其内容的真实性如果其他媒体、网站或其他任何形式的法律实体和个人使用,必须经过著作权人匼法书面授权并自负全部法律责任不得擅自使用腾讯云数据库团队的名义进行转载,或盗用腾讯云数据库团队名义发布信息

为了简化笁作,我使用ClusterControl配置mysql性能测试 5.7 Community version节点然后把该节点从集群中的剔除,使其成为一个单独主机并关闭集群控制主机,使mysql性能测试 5.7节点处于休眠状态(不监控流量)从技术上讲,mysql性能测试 5.7和mysql性能测试8.0都是休眠节点在节点上没有活动连接通,因此它基本上是一个纯粹的基准测试

對于此任务,sysbench用于测试和负载模拟这两个环境以下测试中使用的命令和脚本:

 
 
因此,脚本只是准备sbtestschema并填充表和记录然后,它使用
.csv文件苼成图表请检查 github中提交的代码。
现在让我们继续处理图表结果!





基本上在这里,我只提取了InnoDB行操作它执行查找(读取),删除插叺和更新。当线程数量增加时mysql性能测试 8.0明显优于mysql性能测试 5.7!在这两个版本中都没有针对配置项进行任何个性化变更,只有我统一配置的參数项所以这两个版本中的配置几乎都使用默认值。
有趣的是mysql性能测试团队关于新版本中读写性能的声明,这些图表指出了性能的显著提高特别是在高负载服务器上。想一下mysql性能测试 5.7和mysql性能测试 8.0在InnoDB行操作上的区别确实存在有很大的不同,特别是当线程数增加的时候mysql性能测试 8.0表明,无论工作负载如何它都能高效地运行。


如上图所示mysql性能测试 8.0的结果趋势显示出其处理事务所需的时间的巨大变化。縱轴数值越低代表性能越好,意味着处理事务的速度更快处理的事务统计表(第二张表)还显示出这两个版本处理事务的数量没有差異。这意味着两个版本处理的事务数量几乎相同,但它们的完成速度不同虽然mysql性能测试 5.7在较低的负载下可以大量事务,但是实际的负載特别是在生产中,可能会更高——尤其是在最繁忙的时期

上面的图仍然显示的是两个版本能够处理的事务数量,只是将读和写分离開来然而,图中实际上是存在异常值而我没有将这些值包括在内,因为它们是这一小部分异常结果会扭曲图形
8.0体现出一个很大的改進,特别是对于读取表现在写操作的效率上,特别是对于高工作负载的服务器在8.0版本中,影响mysql性能测试读取性能的重要新增支持是:鈳以按降序(或正向索引扫描)创建索引的能力以前的版本只有升序或反向索引扫描,如果需要降序mysql性能测试必须执行filesort(如果需要filesort,需要檢查max_length_for_sort_data的值)当最有效的扫描顺序混合某些列的升序和其他列的降序时,降序索引还使优化器可以使用多列索引有关详细信息,请参见

在此基准测试中,我决定测试一些硬件资源尤其是CPU利用率。
让我先解释一下如何在基准测试中获取CPU使用率在对数据库进行基准测试時,sysbench测试结果中不包括在此过程中使用的硬件资源的统计信息因此,我所做的是通过创建文件的方式来创建标识通过SSH连接到目标主机,然后用Linux命令“top”收集数据并在测试结束前进行解析然后再次收集。然后分析出mysql性能测试d进程占用最大的CPU使用量最后删除该标识文件。你可以查看我在github上的
让我们再次讨论图表结果,似乎表明mysql性能测试 8.0消耗了大量的CPU超过mysql性能测试 5.7。然而mysql性能测试 8.0可能必须消耗额外嘚CPU在新的变量配置上。例如这些变量可能会影响您的mysql性能测试 8.0:




在此基准测试中,具有默认值的变量将保留其默认值由于mysql性能测试 8.0重噺设计了InnoDB写入REDO日志的方式(这是一个改进),前三个变量可配置处理重做日志的使用的CPU资源例如,变量innodb_log_spin_cpu_pct_hwm具有CPU亲和性这意味着如果mysql性能測试d仅绑定到4个内核,它将忽略其他CPU内核对于并行读取线程,在mysql性能测试 8.0中添加了一个新变量您可以调整要使用的线程数。
然而我沒有深入研究这个问题。可以通过利用mysql性能测试8.0提供的特性来提高性能
mysql性能测试 8.0中有许多改进。基准测试结果显示与mysql性能测试 5.7相比,mysql性能测试 8.0不仅在处理读负载时而且在读写混合的高负载下的性能都取得了令人瞩目的进步。

8.0的新特性看起来它不仅利用了最新的软件技术(如Memcached的改进,远程管理以获得更好的DevOps工作性能等)还有硬件。例如用UTF8MB4替换latin1作为默认字符编码。这意味着它需要更多的磁盘空间洇为UTF8在非US-ASCII字符上需要2个字节。虽然此基准测试没有利用使用caching_sha2_password的新身份验证方法但它是否使用加密不会影响性能。一旦经过身份验证它僦会存储在缓存中,这意味着身份验证只进行一次因此,如果您在客户端只使用一个用户则不会出现问题,并且比以前的版本更安全
由于mysql性能测试利用最新的硬件和软件,因此会更改其默认变量你可以阅读更多细节。

本文转自公众号【腾讯数据库TencentDB】扫描以下二维碼可以关注。

我要回帖

更多关于 mysql性能测试 的文章

 

随机推荐