關於對MySQL的SQL_NO_CACHE的理解和用法舉例
SQL_CACHE意思是說,查詢的時候使用快取。
SQL_NO_CACHE解釋如下:
1.對當前query不使用資料庫已有快取來查詢,則當前query花費時間會多點
2.對當前query的產生的結果集不快取至系統query cache裡,則下次相同query花費時間會多點
當我們想用SQL_NO_CACHE來禁止結果快取時發現結果和我們的預期不一樣,查詢執行的結果仍然是快取後的結果。其實,SQL_NO_CACHE的真正作用是禁止快取查詢結果,但並不意味著cache不作為結果返回給query。
SQL_NO_CACHE的官方解釋如下:
SQL_NO_CACHE means that the query result is not cached. It does not mean that the cache is not used to answer the query.
You may use RESET QUERY CACHE to remove all queries from the cache and then your next query should be slow again. Same effect if you change the table, because this makes all cached queries invalid.
以下是實驗過程:
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select count(*) from fp_data;
+----------+
| count(*) |
+----------+
| 158404 |
+----------+
1 row in set (0.05 sec)
mysql> select count(*) from fp_data;
+----------+
| count(*) |
+----------+
| 158404 |
+----------+
1 row in set (0.03 sec)
mysql> select SQL_CACHE count(*) from fp_data;
+----------+
| count(*) |
+----------+
| 158411 |
+----------+
1 row in set (0.03 sec)
mysql> select SQL_NO_CACHE count(*) from fp_data;
+----------+
| count(*) |
+----------+
| 158404 |
+----------+
1 row in set (0.02 sec)
總結:可以在 SELECT 語句中指定查詢快取的選項,對於那些肯定要實時的從表中獲取資料的查詢,或者對於那些一天只執行一次的查詢,我們都可以指定不進行查詢快取,使用 SQL_NO_CACHE 選項。
對於那些變化不頻繁的表,查詢操作很固定,我們可以將該查詢操作快取起來,這樣每次執行的時候不實際訪問表和執行查詢,只是從快取獲得結果,可以有效地改善查詢的效能,使用SQL_CACHE 選項。
SQL_NO_CACHE解釋如下:
1.對當前query不使用資料庫已有快取來查詢,則當前query花費時間會多點
2.對當前query的產生的結果集不快取至系統query cache裡,則下次相同query花費時間會多點
當我們想用SQL_NO_CACHE來禁止結果快取時發現結果和我們的預期不一樣,查詢執行的結果仍然是快取後的結果。其實,SQL_NO_CACHE的真正作用是禁止快取查詢結果,但並不意味著cache不作為結果返回給query。
SQL_NO_CACHE的官方解釋如下:
SQL_NO_CACHE means that the query result is not cached. It does not mean that the cache is not used to answer the query.
You may use RESET QUERY CACHE to remove all queries from the cache and then your next query should be slow again. Same effect if you change the table, because this makes all cached queries invalid.
以下是實驗過程:
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select count(*) from fp_data;
+----------+
| count(*) |
+----------+
| 158404 |
+----------+
1 row in set (0.05 sec)
mysql> select count(*) from fp_data;
+----------+
| count(*) |
+----------+
| 158404 |
+----------+
1 row in set (0.03 sec)
mysql> select SQL_CACHE count(*) from fp_data;
+----------+
| count(*) |
+----------+
| 158411 |
+----------+
1 row in set (0.03 sec)
mysql> select SQL_NO_CACHE count(*) from fp_data;
+----------+
| count(*) |
+----------+
| 158404 |
+----------+
1 row in set (0.02 sec)
總結:可以在 SELECT 語句中指定查詢快取的選項,對於那些肯定要實時的從表中獲取資料的查詢,或者對於那些一天只執行一次的查詢,我們都可以指定不進行查詢快取,使用 SQL_NO_CACHE 選項。
對於那些變化不頻繁的表,查詢操作很固定,我們可以將該查詢操作快取起來,這樣每次執行的時候不實際訪問表和執行查詢,只是從快取獲得結果,可以有效地改善查詢的效能,使用SQL_CACHE 選項。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2137050/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【mysql】SUBSTRING_INDEX 用法舉例MySqlIndex
- cpp的json的用法舉例JSON
- mysql_config_editor用法舉例MySql
- CONSTRAINT的用法舉例AI
- 關於對Host的理解
- MySQL的information_schema資料庫表說明及用法舉例MySqlORM資料庫
- 關於oracle例項恢復的前滾和回滾的理解Oracle
- 關於點贊業務對MySQL和Redis和MongoDB的思考MySqlRedisMongoDB
- mysql關於FLUSH TABLES和FLUSH TABLES WITH READ LOCK的理解MySql
- jquery九大選擇器的用法舉例jQuery
- 關於imp和exp的有關理解
- mysql關於ibdata檔案的理解MySql
- 關於OPcache對Swoole影響的理解opcache
- css關於/deep/的解釋和用法CSS
- 關於Oracle的redo和undo的理解Oracle
- 關於MySQL中的自聯結的通俗理解MySql
- 關於rpc的整理和理解RPC
- 舉例說明在組合語言中,"[]"的用法組合語言
- 番茄鐘的團隊用法——以會議舉例
- 關於我對於寫部落格寫文章的理解
- 關於對健壯性程式碼的理解
- 使用Java JUnit框架裡的@Rule註解的用法舉例Java框架
- js通過例項介紹關於閉包的用法JS
- 舉例說明Oracle資料庫審計的用法Oracle資料庫
- Python qutip用法(舉例介紹)Python
- 舉例說明你對尾遞迴的理解,有哪些應用場景遞迴
- 對於BFC的理解
- 對於MVVM的理解MVVM
- 2 Day DBA-管理Oracle例項-關於例項的啟動和關閉-關於例項關閉Oracle
- 對於最近的一些理解和思考
- 關於beego和gin的對比Go
- 關於 DOM 的理解
- 關於Vuex的理解Vue
- 關於servlet的理解Servlet
- 關於-this指向的理解
- 關於DCI的理解
- MySQL query_cache_type的DEMAND引數介紹和使用舉例MySql
- 關於Vue中插槽的理解和總結Vue