關於對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_config_editor用法舉例MySql
- 【mysql】SUBSTRING_INDEX 用法舉例MySqlIndex
- 關於對Host的理解
- 舉例說明你對前端工程化的理解前端
- 舉例說明你對前端自動化的理解前端
- 舉例說說你對white-space屬性的理解
- mysql關於FLUSH TABLES和FLUSH TABLES WITH READ LOCK的理解MySql
- mysql關於ibdata檔案的理解MySql
- 舉例說明你對相鄰兄弟選擇器的理解
- jquery九大選擇器的用法舉例jQuery
- 關於rpc的整理和理解RPC
- 關於點贊業務對MySQL和Redis和MongoDB的思考MySqlRedisMongoDB
- 關於OPcache對Swoole影響的理解opcache
- Python qutip用法(舉例介紹)Python
- 關於MySQL中的自聯結的通俗理解MySql
- 使用Java JUnit框架裡的@Rule註解的用法舉例Java框架
- 關於對健壯性程式碼的理解
- 舉例說明你對尾遞迴的理解,有哪些應用場景遞迴
- Promise && async/await的理解和用法PromiseAI
- MySQL query_cache_type的DEMAND引數介紹和使用舉例MySql
- 對於BFC的理解
- 對於MVVM的理解MVVM
- VBox和HBox的用法及用例
- JS中排序的用法和例項JS排序
- MySQL表關係的理解MySql
- 關於 DOM 的理解
- 關於Vuex的理解Vue
- 關於servlet的理解Servlet
- 關於-this指向的理解
- 關於Vue中插槽的理解和總結Vue
- 關於AI、關於chatGPT的幾十種用法AIChatGPT
- vue中 關於$emit的用法VueMIT
- 關於JavaScript中arguments的用法JavaScript
- Python中__init__的用法和理解Python
- Python中關於++和—(自增和自減)的理解Python
- 舉例說明你對HTML5的ruby標籤的理解,都有哪些應用場景?HTML
- 前端模板引擎Handlebars理解與舉例前端
- 關於HashMap的key重寫hashcode和equals的理解HashMap
- 對於button元素的理解