黄金法则:MySQL基准测试最佳实践

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS Agent(兼容OpenClaw),2核4GB
简介:
  MySQL 基准测试数据库性能优化中是一个非常重要的分支。本文目的在于让读者对关系型数据库系统有一个基本的了解,掌握MySQL以及如何管理使用 Linux。文中讨论了MySQL性能因素以及如何测试CPU性能,同时使用具体的例子来展示几种实用的测试MySQL系统的实践方法。
  为什么数据库管理员要在MySQL系统上运行基准测试呢?答案显而易见,倘若在一个模拟的实时环境中系统设计能够承受住压力并且满足性能目标,那么数据库管理员也无需大费周章了。
  在深入了解MySQL基准测试程序机制前,弄清楚什么是基准测试,这一点非常重要。简单来说,基准测试是“运行计算机程序或操作行为,通过运行一些标准测试和一系列的映衬来评估对象的相对性能。”
  CPU基准测试主要用来测试硬件和运算能力,而软件基准测试更多的则是测试概念元素。
  在我们的案例中,软件基准测试中数据库管理系统基准测试是一个很好的例子。这种类型的测试目的是衡量数据库管理系统的吞吐量和响应时间。最终的测试结果会以分数显示,而这些分数主要用来比较。
  数据库管理员一般很难分清基准测试和 压力测试之间的区别。这一点我们可以理解,因为这两种条件有着类似的目标,即数据库容量。两者明显的不同点在于:基准测试给出的结果,以数字呈现,能够允许你在每个基准测试和服务器/系统中调整设置,这是可以改变的,同时也能反应出数据库管理员是成功还是失败。而压力测试则是把系统推向极端边缘用以了解系统的极限有多大。
  由于本文重点讨论MySQL基准测试而非压力测试,所有后者我们不再进行讨论。在MySQL服务器运行基准测试时,性能因素是数据库管理员必须考虑的问题。那么,有哪些性能因素?答案就是:吞吐量,延迟时间和可扩展性。将这三个因素结合在一起,代表了MySQL服务器的整体性能。
   那么我们如何进行MySQL基准测试呢?为了获取正确的结果,请遵守以下一些规则:
  应该多次检查输入的数据;
  应该多次运行基准测试,至少5次;
  重新启动MySQL服务器以消除任何不必要的缓存因素;
  数据库管理员要有兴趣、认真对待进程。
   下面有几个影响基准测试的例子,我们在任何时候都应当避免这种情况出现:
  在一台单一的虚拟机上运行基准测试;
  不可忽视不同网络基础设施的影响;
  使用MySQL服务器默认设置;
  无需根据服务器配置特定的和独特的业务需求;
  无法消除缓存问题;
  运行基准测试时,忽视任何不必要的缓存问题。
   如何在MySQL上运行基准测试?
  在构建MySQL网站时把现有的技术文档增加到MySQL基准测试中,这是一个非常实用的基准测试功能。MySQL开发团队称,BENCHMARK ()函数常被用来测试MySQL进程有多快?它适用于MySQL客户端。
  详细功能显示如:BENCHMARK (count, expr): The BENCHMARK ()函数执行的表达式为expr重复计算次数。测试的结果值始终为0。基准测试最重要的数字出现在几秒钟时间内。如下图示例:

这里有一些技巧包括如何获得BENCHMARK () 函数正确结果。这几点如下:
  建议多次执行该函数;
  允许仅适用scalar表达;
  表达式必须返回单个列或单个行;
  该功能减少了由于网络或语法分析器而带来的干扰。
  使用SysBench
  MySQL的开发者建议使用一款流行的测试工具——SysBench(由MySQL开发者开发),这是一款多功能的工具允许数据库管理员测试CPU、文件IO以及MySQL性能。
  下面我们就来看下利用SysBench对CPU、MySQL进行基准测试。
   CPU性能
  用于CPU性能基准测试命令显示如下:该命令将启动一个进程并且产出大量的数字。
  sysbench --test=cpu --cpu-max-prime=20000 run
  然而,最重要的数字是以总的时间(以秒为单位)为主。利用所花费的时间来计算所需要的被测试的计算参数。这一点很重要,你可以用来对比基准测试在横跨多个系统时最有价值的数据。
   MySQL性能
  SysBench可以用来测量MySQL性能。要想做到这一点,首先我们可以在数据库‘monitis’中创建1,000,000行数据测试表。通过以下命令执行:
  sysbench --monitis=oltp --oltp-table-size=1000000 --mysql-db=monitis --mysql-user=root --mysql-password=yourrootsqlpassword prepare
   接着在MySQL基准测试中输入:
  sysbench --monitis=oltp --oltp-table-size=1000000 --mysql-db=monitis –mysql-user=root –mysql-password=yourrootsqlpassword –max-time=60 –oltp-read-only=on –max-requests=0 –num-threads=8 run
  当基准测试结果显示后,查看交易列表。这个值是以每秒为交换单位。
  为了确保所需要的基准测试在系统中能够很好的运行,这里只需要输入简单的命令:
  sysbench -- monitis =oltp --mysql-db= monitis --mysql-user=root --mysql-password=yourrootsqlpassword cleanup
  尽管可能会出现大量的MySQL性能基准测试类型,但上面的这些信息足够你使用了。
   结束语:
  MySQL性能测试针对不同的项目采用不同的解决方案。这是因为由不同的需求、时间,目标决定的。当然在MySQL系统上运行基准测试,就其技术本身而言在日常业务运作时也是非常必要的,希望这些实践对你有所帮助。

最新内容请见作者的GitHub页:http://qaseven.github.io/

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
机器学习/深度学习 人工智能 监控
软件测试中的自动化测试策略与最佳实践##
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将探讨自动化测试的重要性,分析不同类型的自动化测试工具和框架,并深入讨论实施自动化测试的最佳实践。通过案例研究和数据分析,我们将揭示如何有效整合自动化测试到软件开发生命周期中,以及它如何帮助团队提高测试效率和覆盖率。 ##
322 1
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
542 6
|
Oracle 关系型数据库 MySQL
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
|
SQL 缓存 关系型数据库
使用温InnoDB缓冲池启动MySQL测试
使用温InnoDB缓冲池启动MySQL测试
259 0
|
存储 监控 测试技术
测试脚本编写和维护的最佳实践有哪些?
测试脚本编写和维护的最佳实践有哪些?
539 50
|
SQL 缓存 关系型数据库
MySQL8.4 Enterprise安装Firewall及测试
MySQL8.4 Enterprise安装Firewall及测试
454 0
|
安全 关系型数据库 MySQL
MySQL8使用物理文件恢复MyISAM表测试
MySQL8使用物理文件恢复MyISAM表测试
295 0
|
Devops 测试技术 持续交付
软件测试中的自动化与持续集成:最佳实践与挑战
在快速迭代的软件开发周期中,自动化测试和持续集成(CI)已成为提高软件质量和加速产品上市的关键策略。本文探讨了自动化测试和CI的实施如何帮助开发团队提前发现缺陷、缩短反馈循环,并确保代码质量。我们将深入分析自动化测试的策略选择、工具应用以及面临的挑战,同时提供一些克服这些挑战的最佳实践。
715 27
|
监控 数据管理 测试技术
API接口自动化测试深度解析与最佳实践指南
本文详细介绍了API接口自动化测试的重要性、核心概念及实施步骤,强调了从明确测试目标、选择合适工具、编写高质量测试用例到构建稳定测试环境、执行自动化测试、分析测试结果、回归测试及集成CI/CD流程的全过程,旨在为开发者提供一套全面的技术指南,确保API的高质量与稳定性。
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
557 4

推荐镜像

更多