Di MariaDB, BENCHMARK()
adalah fungsi bawaan yang mengeksekusi ekspresi beberapa kali.
Ini dapat digunakan untuk menghitung seberapa cepat MariaDB memproses ekspresi.
Hasilnya selalu 0
. Fungsi ini dimaksudkan untuk digunakan dalam alat baris perintah mysql, yang melaporkan waktu eksekusi kueri.
Sintaks
Sintaksnya seperti ini:
BENCHMARK(count,expr)
Dimana count
adalah berapa kali Anda ingin expr
untuk berlari.
Contoh 1
Berikut ini contoh untuk didemonstrasikan:
SELECT BENCHMARK(2, SLEEP(2));
Hasil:
+------------------------+ | BENCHMARK(2, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (4.015 sec)
Seperti yang diharapkan, 0
dikembalikan. Namun, yang kami minati adalah waktu eksekusi kueri.
Di sini saya menggunakan SLEEP()
berfungsi untuk tidur selama 2 detik. Menggunakan fungsi ini dengan sendirinya biasanya akan menyebabkan pernyataan membutuhkan waktu sekitar 2 detik untuk dieksekusi.
Namun, dalam hal ini saya melewati 2
sebagai argumen pertama untuk BENCHMARK()
. Itu menyebabkan SLEEP()
fungsi untuk dieksekusi dua kali, menyebabkan BENCHMARK()
fungsi yang membutuhkan waktu sekitar 4 detik untuk dieksekusi (tepatnya 4.015 detik).
Inilah yang terjadi jika kita meningkatkan argumen pertama menjadi 3
:
SELECT BENCHMARK(3, SLEEP(2));
Hasil:
+------------------------+ | BENCHMARK(3, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (6.012 sec)
Kali ini SLEEP()
fungsi dieksekusi tiga kali, jadi BENCHMARK()
hanya membutuhkan waktu lebih dari 6 detik untuk dieksekusi.
Contoh 2
Berikut adalah contoh yang menggunakan ENCODE()
berfungsi untuk mengkodekan string (argumen pertama) dengan kata sandi (argumen kedua):
SELECT BENCHMARK(100000, ENCODE('Homer', 'Symptom'));
Hasil:
+-----------------------------------------------+ | BENCHMARK(100000, ENCODE('Homer', 'Symptom')) | +-----------------------------------------------+ | 0 | +-----------------------------------------------+ 1 row in set (0.016 sec)
Kita dapat melihat bahwa operasi tersebut membutuhkan waktu 0,016 detik untuk diselesaikan.
Mari kita tingkatkan argumen pertama dari 100.000 menjadi 1.000.000 dan lihat bagaimana hal itu memengaruhi waktu eksekusi.
SELECT BENCHMARK(1000000, ENCODE('Homer', 'Symptom'));
Hasil:
+------------------------------------------------+ | BENCHMARK(1000000, ENCODE('Homer', 'Symptom')) | +------------------------------------------------+ | 0 | +------------------------------------------------+ 1 row in set (0.118 sec)
Kali ini butuh waktu lebih lama untuk berjalan.
Argumen Null
Jika argumen pertama adalah null
, lalu null
dikembalikan:
SELECT BENCHMARK(null, ENCODE('Homer', 'Symptom'));
Hasil:
+---------------------------------------------+ | BENCHMARK(null, ENCODE('Homer', 'Symptom')) | +---------------------------------------------+ | NULL | +---------------------------------------------+ 1 row in set (0.007 sec)
Tetapi jika hanya argumen kedua null
, lalu 0
dikembalikan:
SELECT BENCHMARK(100000, null);
Hasil:
+-------------------------+ | BENCHMARK(100000, null) | +-------------------------+ | 0 | +-------------------------+ 1 row in set (0.002 sec)
Jumlah Argumen Tidak Valid
Memanggil BENCHMARK()
tanpa argumen, atau dengan jumlah argumen yang salah, menghasilkan kesalahan:
SELECT BENCHMARK();
Hasil:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'
Dan:
SELECT BENCHMARK(1, 2, 3);
Hasil:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'