mysql的執行計劃快取問題
對於mysql的效能測試,如果以某個單獨的sql併發跑,基本沒有什麼意義(當然也可以關閉快取,這樣比較有意義),因為如果sql一樣的話,直接從快取返回,速度很快。另外mysql解析sql語句的代價也是挺大的,但是mysql沒有快取執行計劃等,一般每次去查詢的都要重新解析的:
剛剛開始弄mysql,不知道其他大型網站是怎麼解決這個問題的
mysql> show profile cpu,block io for query 1;
+--------------------------------+----------+----------+------------+--------------+---------------+
| Status | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+--------------------------------+----------+----------+------------+--------------+---------------+
| starting | 0.000032 | 0.000000 | 0.000000 | 0 | 0 |
| checking query cache for query | 0.000016 | 0.000000 | 0.000000 | 0 | 0 |
| checking privileges on cached | 0.000009 | 0.000000 | 0.000000 | 0 | 0 |
| sending cached result to clien | 0.000017 | 0.000000 | 0.000000 | 0 | 0 |
| logging slow query | 0.000007 | 0.000000 | 0.000000 | 0 | 0 |
| cleaning up | 0.000003 | 0.000000 | 0.000000 | 0 | 0 |
+--------------------------------+----------+----------+------------+--------------+---------------+
mysql> show profile cpu ,block io for query 2;
+--------------------------------+----------+----------+------------+--------------+---------------+
| Status | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+--------------------------------+----------+----------+------------+--------------+---------------+
| starting | 0.000019 | 0.000000 | 0.000000 | 0 | 0 |
| checking query cache for query | 0.000082 | 0.001000 | 0.000000 | 0 | 0 |
| Opening tables | 0.000010 | 0.000000 | 0.000000 | 0 | 0 |
| System lock | 0.000004 | 0.000000 | 0.000000 | 0 | 0 |
| Table lock | 0.000035 | 0.000000 | 0.000000 | 0 | 0 |
| init | 0.000032 | 0.000000 | 0.000000 | 0 | 0 |
| optimizing | 0.000011 | 0.000000 | 0.000000 | 0 | 0 |
| statistics | 0.001680 | 0.001000 | 0.000000 | 0 | 0 |
| preparing | 0.001619 | 0.002000 | 0.000000 | 0 | 0 |
| Creating tmp table | 0.000023 | 0.000000 | 0.000000 | 0 | 0 |
| executing | 0.000003 | 0.000000 | 0.000000 | 0 | 0 |
| Copying to tmp table | 0.001007 | 0.000999 | 0.000000 | 0 | 0 |
| Sorting result | 0.000027 | 0.000000 | 0.000000 | 0 | 0 |
| Sending data | 0.000015 | 0.000000 | 0.000000 | 0 | 0 |
| end | 0.000004 | 0.000000 | 0.000000 | 0 | 0 |
| removing tmp table | 0.000028 | 0.000000 | 0.000000 | 0 | 0 |
| end | 0.000004 | 0.000000 | 0.000000 | 0 | 0 |
| query end | 0.000003 | 0.000000 | 0.000000 | 0 | 0 |
| freeing items | 0.000032 | 0.000000 | 0.000000 | 0 | 0 |
| storing result in query cache | 0.000007 | 0.000000 | 0.000000 | 0 | 0 |
| logging slow query | 0.000003 | 0.000000 | 0.000000 | 0 | 0 |
| cleaning up | 0.000003 | 0.000000 | 0.000000 | 0 | 0 |
+--------------------------------+----------+----------+------------+--------------+---------------+
22 rows in set (0.00 sec)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/758322/viewspace-680168/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sql執行計劃變更和刪除快取中執行計劃的方法SQL快取
- 執行計劃問題導致處理速度時快時慢的問題
- 執行計劃-1:獲取執行計劃
- MySQL 5.7獲取指定執行緒正在執行SQL的執行計劃資訊MySql執行緒
- MySQL 執行計劃MySql
- MySQL執行計劃MySql
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- 【sql調優之執行計劃】獲取執行計劃SQL
- 獲取執行計劃的方法
- mysql執行計劃explainMySqlAI
- mysql explain 執行計劃MySqlAI
- MySQL執行計劃解析MySql
- 如何清除某條SQL在庫快取中的執行計劃SQL快取
- 執行計劃的偏差導致的效能問題
- 交流(1)-- 執行計劃錯誤問題
- 獲取SQL執行計劃SQL
- SQL執行計劃異常引起的效能問題SQL
- SQL執行計劃異常 引起的效能問題SQL
- 一個執行計劃解析的小問題分析
- 完美的執行計劃導致的效能問題
- Oracle獲取執行計劃的方法Oracle
- 獲取SQL執行計劃的方式:SQL
- MySQL執行計劃解析(四)MySql
- 讀懂MySQL執行計劃MySql
- 讀懂 MySQL 執行計劃MySql
- mysql索引和執行計劃MySql索引
- APP 快取資料執行緒安全問題探討APP快取執行緒
- MySQL中in(常量列表)的執行計劃MySql
- 【MySQL】MySQL的執行計劃及索引優化MySql索引優化
- 獲取執行計劃之Autotrace
- 快取的問題快取
- 如何獲取真實的執行計劃
- 獲取執行計劃的6種方法
- RDSSQLServer-專題分享-巧用執行計劃快取之索引缺失SQLServer快取索引
- Oracle訪問表的執行計劃Oracle
- 帶你看懂MySQL執行計劃MySql
- MySQL Explain執行計劃 - 詳解MySqlAI
- 十六、Mysql之Explain執行計劃MySqlAI