Die BENCHMARK SQL-Funktion in MySQL und MariaDB - Geschwindigkeit von Ausdrücken messen |
|
| BENCHMARK | Syntax: | BENCHMARK(Anzahl, Ausdruck) | Rückgabe-Wert: | INTEGER | Funktions-Typ: | Informations-Funktion | |
| | Die SQL-Funktion BENCHMARK() führt den "Ausdruck" wiederholt "Anzahl" mal aus.
Es kann verwendet werden, um zu messen, wie schnell die Datenbank den Ausdruck verarbeitet.
Die Funktion eignet sich nicht, um zu messen, wie schnell Abfragen aus Tabellen sind, da der Abfragen-Optimierer das Ergebnis verfälscht.
Der Ergebniswert ist 0. Wenn "Anzahl" negativ ist, gibt die BENCHMARK()-Funktion NULL zurück.
Die Funktion sollte mit Vorsicht verwendet werden, da die Ausführung zeit- oder ressourcenintensiver Ausdrücke die Gesamtleistung des Servers beeinträchtigen kann. | Beispiele der BENCHMARK()-Funktion mit MariaDB 10.3 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
|
set @time=sysdate();
SELECT benchmark(100000000, adddate(now(), interval 1 second));
select timediff(sysdate(),@time);
set @time=sysdate();
SELECT benchmark(100000000, (select adddate(now(), interval 1 second) as n from menu limit 1));
select timediff(sysdate(),@time);
set @time=sysdate();
SELECT benchmark(100000000, (select count(*) from menu));
select timediff(sysdate(),@time);
set @time=sysdate();
SELECT benchmark(100000000, (select sum(pos) from menu));
select timediff(sysdate(),@time);
SELECT benchmark(-10000, (select sum(pos) from menu));
|
|
benchmark(100000000, adddate(now(), interval 1 second)) |
int(1) |
0 |
|
|
timediff(sysdate(),@time) |
time(10) |
00:00:06 |
|
|
benchmark(100000000, (select adddate(now(), interval 1 second) as n from menu limit 1)) |
int(1) |
0 |
|
|
timediff(sysdate(),@time) |
time(10) |
00:00:03 |
|
|
benchmark(100000000, (select count(*) from menu)) |
int(1) |
0 |
|
|
timediff(sysdate(),@time) |
time(10) |
00:00:01 |
|
|
benchmark(100000000, (select sum(pos) from menu)) |
int(1) |
0 |
|
|
timediff(sysdate(),@time) |
time(10) |
00:00:00 |
|
|
benchmark(-10000, (select sum(pos) from menu)) |
int(1) |
NULL |
|
|
| Beispiele der BENCHMARK()-Funktion mit MySQL 8.0 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
|
set @time=sysdate();
SELECT benchmark(100000000, adddate(now(), interval 1 second));
select timediff(sysdate(),@time);
set @time=sysdate();
SELECT benchmark(100000000, (select adddate(now(), interval 1 second) as n from menu limit 1));
select timediff(sysdate(),@time);
set @time=sysdate();
SELECT benchmark(100000000, (select count(*) from menu));
select timediff(sysdate(),@time);
set @time=sysdate();
SELECT benchmark(100000000, (select sum(pos) from menu));
select timediff(sysdate(),@time);
SELECT benchmark(-10000, (select sum(pos) from menu));
|
|
benchmark(100000000, adddate(now(), interval 1 second)) |
bigint(1) |
0 |
|
|
timediff(sysdate(),@time) |
time(17) |
00:00:21.000000 |
|
|
benchmark(100000000, (select adddate(now(), interval 1 second) as n from menu limit 1)) |
bigint(1) |
0 |
|
|
timediff(sysdate(),@time) |
time(17) |
00:00:01.000000 |
|
|
benchmark(100000000, (select count(*) from menu)) |
bigint(1) |
0 |
|
|
timediff(sysdate(),@time) |
time(17) |
00:00:02.000000 |
|
|
benchmark(100000000, (select sum(pos) from menu)) |
bigint(1) |
0 |
|
|
timediff(sysdate(),@time) |
time(17) |
00:00:02.000000 |
|
|
benchmark(-10000, (select sum(pos) from menu)) |
bigint(1) |
NULL |
|
|
| Die Beispiele wurden mit dem MyWAY SQL-Manager erstellt: | Verwendung der BENCHMARK() Funktion in MySQL und MariaDB-Datenbanken | In MySQL und MariaDB wird die BENCHMARK()-Funktion verwendet, um einen bestimmten Ausdruck oder eine bestimmte Funktion wiederholt für eine bestimmte Anzahl von Iterationen auszuführen. Die Funktion wird hauptsächlich für Benchmarking- und Leistungstestzwecke verwendet, wobei die Ausführungszeit eines bestimmten Ausdrucks oder einer bestimmten Funktion bewertet werden kann, um verschiedene Ansätze zu vergleichen oder Leistungsverbesserungen zu messen. Dabei kann der zu messende Ausdruck eder gültige SQL-Ausdruck oder jede gültige SQL-Funktion sein.
Die BENCHMARK()-Funktion gibt das Ergebnis der letzten Iteration des Ausdrucks oder der Funktion zurück, dabei is das tatsächliche Ergebnis selbst in Benchmarking-Szenarien möglicherweise nicht aussagekräftig, da der Hauptzweck darin besteht, die Ausführungszeit zu messen. Die Verwendung der Funktion kann bei Ausführung komplexer oder ressourcenintensiver Vorgänge für eine große Anzahl von Iterationen Auswirkungen auf die Serverleistung haben kann. | | Weitere MySQL und MariaDB SQL Informations-Funktionen | |
| | Weitere Informationen zur SQL-Funktion BENCHMARK: und |
|
|
|
|