• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 评估效果(基准测试)

    要衡量性能,请考虑以下因素:

    • 无论您是在安静的系统上测量单个操作的速度,还是一段时间内一组操作(“工作负荷”)如何工作。通过简单的测试,您通常可以测试更改一个方面(配置设置,表上的索引集,查询中的SQL子句)如何影响性能。基准测试通常是长期运行且精心设计的性能测试,其结果可能会指示高级选择,例如硬件和存储配置,或升级到新MySQL版本的时间。
    • 为了进行基准测试,有时您必须模拟繁重的数据库工作量才能获得准确的图像。
    • 表现可能取决于许多不同的因素,以至于几个百分点的差异可能不是决定性的胜利。在不同的环境中进行测试时,结果可能会以相反的方式发生变化。
    • 某些MySQL功能会根据工作负载来帮助或不帮助性能。为了完整起见,请始终在打开和关闭这些功能的情况下测试性能。尝试与每个工作负载最重要的特点是适应性的散列索引的InnoDB表。

    本节从单个开发人员可以执行的简单直接的测量技术发展到需要更多专业知识来执行和解释结果的更复杂的技术。

    测量表达式和函数的速度

    要测量特定MySQL表达式或函数的速度,请BENCHMARK()使用mysql客户端程序调用该函数。其语法为。返回值始终为零,但是mysql打印一行,显示大约执行该语句所花的时间。例如:BENCHMARK(loop_count,expr)

    mysql> SELECT BENCHMARK(1000000,1	+1);
    +------------------------	+
    | BENCHMARK(1000000,1		+1) 	|
    +------------------------	+
    |                      0 	|
    +------------------------	+
    1 row in set (0.32 sec)
    

    该结果是在奔腾II 400MHz系统上获得的。它表明MySQL在该系统上可以在0.32秒内执行1,000,000个简单加法表达式。

    内置的MySQL函数通常经过高度优化,但是可能会有一些例外。BENCHMARK()是一个很好的工具,用于确定某些功能是否对您的查询有问题。


    使用自己的基准

    对您的应用程序和数据库进行基准测试,以找出瓶颈所在。在修复了一个瓶颈之后(或通过用“虚拟”模块替换它),您可以继续确定下一个瓶颈。即使您的应用程序的总体性能目前可以接受,您还是至少应该为每个瓶颈制定一个计划,并在有一天确实需要额外的性能时决定如何解决它。

    免费的基准测试套件是开放源代码数据库基准测试,可从http://osdb.sourceforge.net/获得。

    仅当系统负载很重时才发生问题是很常见的。我们有许多客户在生产中(经过测试)系统并且遇到负载问题时与我们联系。在大多数情况下,性能问题可能是由于基本数据库设计问题(例如,表扫描在高负载下效果不佳)或操作系统或库问题引起的。在大多数情况下,如果系统尚未投入生产,这些问题将更容易解决。

    为避免此类问题,请在可能的最坏负载下对整个应用程序进行基准测试:

    • mysqlslap程序可以是用于模拟由多个客户端同时发出查询产生的高负载有帮助的。请参见“mysqlslap-负载仿真客户端”。
    • 您还可以尝试通过https://launchpad.net/sysbench和 http://osdldbt.sourceforge.net/#dbt2获得的SysBench和DBT2等基准测试包。

    这些程序或软件包可以使系统崩溃,因此请确保仅在开发系统上使用它们。

    使用performance_schema评估性能

    您可以查询performance_schem 数据库中的表以参见有关服务器及其正在运行的应用程序的性能特征的实时信息。有关详细信息,请参见MySQL性能模式


    上篇:资源组