首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL BENCHMARK() 函數使用教學:效能測試、計時原理與實測範例

     編輯:MySQL 綜合教學

函數定義

BENCHMARK(count, expr)

重複執行 expr count 次,回傳值固定為 0。主要用於 mysql 客戶端計時,觀察伺服器處理運算式的速度。

基本範例

mysql> SELECT BENCHMARK(1000000, ENCODE('hello', 'goodbye'));
+----------------------------------------------+
| BENCHMARK(1000000, ENCODE('hello','goodbye'))|
+----------------------------------------------+
| 0                                            |
+----------------------------------------------+
1 row in set (4.74 sec)

顯示的 4.74 sec 為客戶端經過時間(含網路延遲),非純 CPU 時間。

實測:MD5 雜湊 50 萬次

mysql> SELECT MD5('test');
-- 0.00 sec

mysql> SELECT BENCHMARK(500000, MD5('test'));
-- 6.55 sec

明顯延長,驗證 BENCHMARK 確實重複執行運算式。

使用建議

  • 多執行幾次取平均,減少系統負載波動干擾。
  • 僅供相對效能比較(如函數 A vs 函數 B、索引前後),不可作為絕對基準。
  • 生產環境慎用大 count,會佔用 CPU 資源影響服務。
  • 更精準的效能分析請用 EXPLAIN ANALYZE、sys.schema_table_statistics、Performance Schema、pt-query-digest 等工具。

適用場景

  • 快速驗證某運算式/函數的相對耗時。
  • 比較不同寫法(如 MD5 vs SHA1、AES_ENCRYPT vs DES_ENCRYPT)。
  • 簡易壓測:BENCHMARK(100000, (SELECT 1)) 觀察單純查詢開銷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved