不卡av在线播放_欧美成人AU在线看_亚洲一区二区 视频_五月天亚洲无码伊人

Article / 文章中心

阿里云RDS for MySQL查詢緩存(Query Cache)的設(shè)置和使用

發(fā)布時間:2019-06-25 點擊數(shù):1727

功能和適用范圍

功能:

?降低CPU使用率。

?降低IOPS使用率(某些情況下)。

?減少查詢響應(yīng)時間,提高系統(tǒng)的吞吐量。

適用范圍:

?表數(shù)據(jù)修改不頻繁、數(shù)據(jù)較靜態(tài)。

?查詢(Select)重復(fù)度高。

?查詢結(jié)果集小于 1 MB。

說明 查詢緩存并不一定帶來性能上的提升,在某些情況下(比如查詢數(shù)量大,但重復(fù)的查詢很少)開啟查詢緩存會帶來性能的下降。

原理

RDS for MySQL對來自客戶端的查詢(Select)進行Hash計算得到該查詢的Hash值,通過該Hash值到查詢緩存中匹配該查詢的結(jié)果。

如果匹配(命中),則將查詢的結(jié)果集直接返回給客戶端,不必再解析、執(zhí)行查詢。

如果沒有匹配(命中),則將Hash值和結(jié)果集保存在查詢緩存中,以便以后使用。

查詢涉及的任何一個表中數(shù)據(jù)發(fā)生變化,RDS for MySQL將查詢緩存中所有與該表相關(guān)的查詢結(jié)果集全部釋放(刪除)。

限制

?查詢必須嚴格一致(大小寫、空格、使用的數(shù)據(jù)庫、協(xié)議版本、字符集等必須一致)才可以命中,否則視為不同查詢。

?不緩存查詢中的子查詢結(jié)果集,僅緩存查詢最終結(jié)果集。

?不緩存存儲函數(shù)(Stored Function)、存儲過程(Stored Procedure)、觸發(fā)器(Trigger)、事件(Event)中的查詢。

?不緩存含有每次執(zhí)行結(jié)果變化的函數(shù)的查詢,比如now()、curdate()、last_insert_id()、rand()等。

?不緩存對mysql、information_schema、performance_schema系統(tǒng)數(shù)據(jù)庫表的查詢。

?不緩存使用臨時表的查詢。

?不緩存產(chǎn)生告警(Warnings)的查詢。

?不緩存Select … lock in share mode、Select … for update、 Select * from … where autoincrement_col is NULL類型的查詢。

?不緩存使用用戶定義變量的查詢。

?不緩存使用Hint - SQL_NO_CACHE的查詢。

設(shè)置

?參數(shù)設(shè)置

控制臺參數(shù)設(shè)置如下。

?query_cache_limit(單位:byte):查詢緩存中可存放的單條查詢最大結(jié)果集,默認為 1 MB;超過該大小的結(jié)果集不被緩存。

?query_cache_size(單位:byte):查詢緩存的大小,默認為 3 MB。

?query_cache_type:是否開啟查詢緩存功能。

取值為 0 :關(guān)閉查詢功能。

取值為 1 :開啟查詢緩存功能,但不緩存Select SQL_NO_CACHE開頭的查詢。

取值為 2 :開啟查詢緩存功能,但僅緩存Select SQL_CACHE開頭的查詢。

說明

?修改query_cache_type需要重啟實例(修改后實例會自動重啟)。

?參數(shù)query_cache_size要求設(shè)置值為1024的整數(shù)倍,否則會提示指定參數(shù)無效。

?開啟

參數(shù)query_cache_size大于0并且query_cache_type設(shè)置為1或者2的情況下,查詢緩存開啟。

?關(guān)閉

設(shè)置參數(shù)query_cache_size為0或者設(shè)置query_cache_type為0關(guān)閉查詢緩存。

?建議

?query_cache_size不建議設(shè)置的過大。過大的空間不但擠占實例其他內(nèi)存結(jié)構(gòu)的空間,而且會增加在緩存中搜索的開銷。建議根據(jù)實例規(guī)格,初始值設(shè)置為10MB到100 MB之間的值,而后根據(jù)運行使用情況調(diào)整。

?建議通過調(diào)整query_cache_size的值來開啟、關(guān)閉查詢緩存,因為修改query_cache_type參數(shù)需要重啟實例生效。

?查詢緩存適用于特定的場景,建議充分測試后,再考慮開啟,避免引起性能下降或引入其他問題。

驗證效果

?控制臺

?SQL命令

可以通過如下命令來獲取查詢緩存的使用狀態(tài)。

show global status like ‘Qca%’;

?Qcache_hits:查詢緩存命中次數(shù)。

?Qcache_inserts:將查詢和結(jié)果集寫入到查詢緩存中的次數(shù)。

?Qcache_not_cached:不可以緩存的查詢次數(shù)。

?Qcache_queries_in_cache:查詢緩存中緩存的查詢量。

阿里云RDS數(shù)據(jù)庫   阿里云服務(wù)器