MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

MariaDB BENCHMARK () Giải thích

Trong MariaDB, BENCHMARK() là một hàm tích hợp thực thi một biểu thức với số lần được chỉ định.

Nó có thể được sử dụng để tính thời gian MariaDB xử lý biểu thức nhanh như thế nào.

Kết quả luôn là 0 . Hàm này được thiết kế để sử dụng trong công cụ dòng lệnh mysql, công cụ này báo cáo thời gian thực hiện truy vấn.

Cú pháp

Cú pháp như sau:

BENCHMARK(count,expr)

Nơi count là số lần bạn muốn expr để chạy.

Ví dụ 1

Dưới đây là một ví dụ để chứng minh:

SELECT BENCHMARK(2, SLEEP(2));

Kết quả:

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

Như mong đợi, 0 đã được trả lại. Tuy nhiên, điều chúng tôi quan tâm là thời gian thực hiện truy vấn.

Ở đây tôi đã sử dụng SLEEP() có chức năng ngủ trong 2 giây. Việc sử dụng chức năng này thông thường sẽ khiến câu lệnh mất khoảng 2 giây để thực thi.

Tuy nhiên, trong trường hợp này, tôi đã vượt qua 2 làm đối số đầu tiên cho BENCHMARK() . Điều đó gây ra SLEEP() hàm thực thi hai lần, gây ra BENCHMARK() mất khoảng 4 giây để thực thi (chính xác là 4,015 giây).

Đây là những gì sẽ xảy ra nếu chúng tôi tăng đối số đầu tiên thành 3 :

SELECT BENCHMARK(3, SLEEP(2));

Kết quả:

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

Lần này là SLEEP() hàm đã được thực thi ba lần và vì vậy BENCHMARK() chỉ mất hơn 6 giây để thực thi.

Ví dụ 2

Dưới đây là một ví dụ sử dụng ENCODE() hàm mã hóa một chuỗi (đối số đầu tiên) với mật khẩu (đối số thứ hai):

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

Kết quả:

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

Chúng tôi có thể thấy rằng thao tác này mất 0,016 giây để hoàn thành.

Hãy tăng đối số đầu tiên từ 100.000 lên 1.000.000 và xem điều đó ảnh hưởng như thế nào đến thời gian thực thi.

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

Kết quả:

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

Lần này mất nhiều thời gian để chạy hơn.

Đối số rỗng

Nếu đối số đầu tiên là null , rồi đến null được trả lại:

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

Kết quả:

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

Nhưng nếu chỉ đối số thứ hai là null , rồi đến 0 được trả lại:

SELECT BENCHMARK(100000, null);

Kết quả:

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

Số lượng đối số không hợp lệ

Đang gọi BENCHMARK() không có đối số hoặc với số đối số sai, dẫn đến lỗi:

SELECT BENCHMARK();

Kết quả:

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

Và:

SELECT BENCHMARK(1, 2, 3);

Kết quả:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giới thiệu về Tìm kiếm Toàn văn trong MariaDB

  2. Tổng quan về MariaDB Xpand (trước đây là ClustrixDB)

  3. Cách hoạt động của WEEK () trong MariaDB

  4. Trả lại hàng ngẫu nhiên từ một bảng trong MariaDB

  5. Cách hoạt động của toán tử BINARY trong MariaDB