溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在mysql中查詢緩存

發(fā)布時間:2021-03-08 11:16:53 來源:億速云 閱讀:442 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了如何在mysql中查詢緩存,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

一、查詢緩存的實現(xiàn)流程

如何在mysql中查詢緩存

二、配置查詢緩存

1、查看當前的mysql數(shù)據(jù)庫是否支持查詢緩存

SHOW VARIABLES LIKE 'have_query_cache';

如何在mysql中查詢緩存

2、查看當前mysql是否開啟了查詢緩存

SHOW VARIABLES LIKE 'query_cache_type';

如何在mysql中查詢緩存

3、查看查詢緩存的占用大小

SHOW VARIABLES LIKE 'query_cache_size';

如何在mysql中查詢緩存

4、查看查詢緩存的狀態(tài)變量

SHOW STATUS LIKE 'Qcache%';

如何在mysql中查詢緩存


參數(shù)含義
Qcache_free_blocks查詢緩存中的可用內(nèi)存塊數(shù)
Qcache_free_memory查詢緩存的可用內(nèi)存量
Qcache_hits查詢緩存命中數(shù)
Qcache_inserts添加到查詢緩存的查詢數(shù)
Qcache_lowmen_prunes由于內(nèi)存不足而從查詢緩存中刪除的查詢數(shù)
Qcache_not_cached非緩存查詢的數(shù)量(由于 query_cache_type 設(shè)置而無法緩存或未緩存)
Qcache_queries_in_cache查詢緩存中注冊的查詢數(shù)
Qcache_total_blocks查詢緩存中的塊總數(shù)

三、開啟查詢緩存

MySQL的查詢緩存默認是關(guān)閉的,需要手動配置參數(shù) query_cache_type , 來開啟查詢緩存。query_cache_type
該參數(shù)的可取值有三個


含義
OFF 或 0查詢緩存功能關(guān)閉
ON 或 1查詢緩存功能打開,SELECT的結(jié)果符合緩存條件即會緩存,否則,不予緩存,顯式指定 SQL_NO_CACHE,不予緩存
DEMAND 或 2查詢緩存功能按需進行,顯式指定 SQL_CACHE 的SELECT語句才會緩存;其它均不予緩存

1、在usr/my.cnf中進行配置(配置文件也可能在/etc/my.cnf)

如何在mysql中查詢緩存

2、重啟服務

service mysql restart

3、測試

如何在mysql中查詢緩存

如何在mysql中查詢緩存
如何在mysql中查詢緩存

四、查詢緩存SELECT選項

可以在SELECT語句中指定兩個與查詢緩存相關(guān)的選項

  • SQL_CACHE : 如果查詢結(jié)果是可緩存的,并且 query_cache_type 系統(tǒng)變量的值為ON或 DEMAND ,則緩存查詢 結(jié)果 。

  • SQL_NO_CACHE : 服務器不使用查詢緩存。它既不檢查查詢緩存,也不檢查結(jié)果是否已緩存,也不緩存查詢結(jié)果

SELECT SQL_CACUE id,name FROM customer;
SELECT SQL_NO_CACHE id,name FROM customer;

五、查詢緩存失效現(xiàn)象

1、SQL語句不一致

要想命中緩存,查詢的SQL語句必須一致

SQL1:select count(*) from tb_item;
SQL2:select count(*) from tb_Item;

2、查詢語句有一些不確定的值

SQL1:select * from tb_item where updatetime < now() limit 1;
SQL2:select user();
SQL3:select database();

3、不使用任何表查詢語句

select 'A';

4、查詢mysql、information_schema或performance_schema數(shù)據(jù)庫中的表

select * from information_schema.engines;

5、在存儲的函數(shù)、觸發(fā)器或事件主體內(nèi)執(zhí)行的查詢

如題

6、表更改導致緩存刪除

如果表更改,則使用該表的所有高速緩存查詢都將變?yōu)闊o效并從高速緩存中刪除。這包括使用 MERGE 映射到 已更改表的表的查詢。一個表可以被許多類型的語句,如被改變 INSERT, UPDATE, DELETE, TRUNCATE TABLE, ALTER TABLE, DROP TABLE,或 DROP DATABASE 。

上述內(nèi)容就是如何在mysql中查詢緩存,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI