【问题标题】:How to Intentionally Create a Long-Running MySQL Query如何故意创建长时间运行的 MySQL 查询
【发布时间】:2011-04-22 23:38:35
【问题描述】:

我知道这是一个奇怪的问题,但我想知道是否有一个我可以创建的 MySQL 查询,而我的数据库中已经有数百万行会消耗资源并运行很长时间。我的最终目标是在资源争用的情况下测试我的应用程序,并确保我处理故障(特别是服务器超时)的方法是正确的。

如果有另一种方法我可以在不创建和执行高资源查询的情况下对此进行测试,我也会很高兴听到这一点。

【问题讨论】:

  • @Nix - 数以万计

标签: mysql testing


【解决方案1】:

我假设您可以为此使用 benchmark(),尽管这不是它的范围。

select benchmark(9999999999, md5('when will it end?'));

【讨论】:

  • 这很好用,虽然我觉得我能听到我的 CPU 在压力下轻轻地哭泣
  • 由于 MySQL(和 MariaDB)的特殊性,每次这样的查询只会占用一个 CPU 核心,所以当您的数据库服务器只有 1 个核心时,您将遇到重大问题
【解决方案2】:

如果您需要它们运行一段时间,但不那么长,那么试试

select benchmark(1000000, md5('when will it end?')); -- around 0.3s
select benchmark(10000000, md5('when will it end?')); -- around 3s
select benchmark(100000000, md5('when will it end?')); -- around 30s

【讨论】:

    【解决方案3】:

    对于那些想知道如何为 MS SQL Server(不是 MySQL)实现类似操作的人,如果您想测试超时,请使用 WAITFOR DELAY '02:00'

    【讨论】:

    • 对不起,今天是星期五,我挂了。这当然是 MS SQL。
    猜你喜欢
    • 2021-10-19
    • 2014-01-28
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多