sql >> データベース >  >> RDS >> MariaDB

MariaDB BENCHMARK()の説明

    MariaDBでは、BENCHMARK() 式を指定された回数実行する組み込み関数です。

    これを使用して、MariaDBが式を処理する速度を計測できます。

    結果は常に0 。この関数は、クエリの実行時間を報告するmysqlコマンドラインツール内で使用することを目的としています。

    構文

    構文は次のようになります:

    BENCHMARK(count,expr)

    countの場所 exprが必要な回数です 実行します。

    例1

    デモンストレーションの例を次に示します。

    SELECT BENCHMARK(2, SLEEP(2));

    結果:

    +------------------------+
    | BENCHMARK(2, SLEEP(2)) |
    +------------------------+
    |                      0 |
    +------------------------+
    1 row in set (4.015 sec)

    予想通り、0 返されました。ただし、関心があるのはクエリの実行時間です。

    ここでは、SLEEP()を使用しました 2秒間スリープする機能。この関数を単独で使用すると、通常、ステートメントの実行に約2秒かかります。

    ただし、この場合、2を渡しました BENCHMARK()の最初の引数として 。そのため、SLEEP() 関数が2回実行され、BENCHMARK()が発生します 実行に約4秒かかる関数(正確には4.015秒)。

    最初の引数を3に増やすとどうなりますか。 :

    SELECT BENCHMARK(3, SLEEP(2));

    結果:

    +------------------------+
    | BENCHMARK(3, SLEEP(2)) |
    +------------------------+
    |                      0 |
    +------------------------+
    1 row in set (6.012 sec)

    今回はSLEEP() 関数が3回実行されたため、BENCHMARK() 実行に6秒強かかりました。

    例2

    ENCODE()を使用する例を次に示します。 文字列(最初の引数)をパスワード(2番目の引数)でエンコードする関数:

    SELECT BENCHMARK(100000, ENCODE('Homer', 'Symptom'));

    結果:

    +-----------------------------------------------+
    | BENCHMARK(100000, ENCODE('Homer', 'Symptom')) |
    +-----------------------------------------------+
    |                                             0 |
    +-----------------------------------------------+
    1 row in set (0.016 sec)

    操作が完了するまでに0.016秒かかったことがわかります。

    最初の引数を100,000から1,000,000に増やして、それが実行時間にどのように影響するかを見てみましょう。

    SELECT BENCHMARK(1000000, ENCODE('Homer', 'Symptom'));

    結果:

    +------------------------------------------------+
    | BENCHMARK(1000000, ENCODE('Homer', 'Symptom')) |
    +------------------------------------------------+
    |                                              0 |
    +------------------------------------------------+
    1 row in set (0.118 sec)

    今回は実行にかなり時間がかかりました。

    ヌル引数

    最初の引数がnullの場合 、次にnull 返されます:

    SELECT BENCHMARK(null, ENCODE('Homer', 'Symptom'));

    結果:

    +---------------------------------------------+
    | BENCHMARK(null, ENCODE('Homer', 'Symptom')) |
    +---------------------------------------------+
    |                                        NULL |
    +---------------------------------------------+
    1 row in set (0.007 sec)

    ただし、2番目の引数のみがnullの場合 、次に0 返されます:

    SELECT BENCHMARK(100000, null);

    結果:

    +-------------------------+
    | BENCHMARK(100000, null) |
    +-------------------------+
    |                       0 |
    +-------------------------+
    1 row in set (0.002 sec)

    引数の数が無効です

    BENCHMARK()を呼び出す 引数がない場合、または引数の数が間違っている場合、エラーが発生します:

    SELECT BENCHMARK();

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'

    そして:

    SELECT BENCHMARK(1, 2, 3);

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'

    1. MySQLテーブルにGUIDを保存するにはどうすればよいですか?

    2. 致命的なエラー:nullでメンバー関数query()を呼び出す

    3. Oracle10gSQLピボット

    4. MicrosoftAccessの10の時間節約ショートカット