日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

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

更新時(shí)間:

功能和適用范圍

功能:

  • 降低CPU使用率。
  • 降低IOPS使用率(某些情況下)。
  • 減少查詢響應(yīng)時(shí)間,提高系統(tǒng)的吞吐量。

適用范圍:

  • 表數(shù)據(jù)修改不頻繁、數(shù)據(jù)較靜態(tài)。
  • 查詢(Select)重復(fù)度高。
  • 查詢結(jié)果集小于 1 MB。
說(shuō)明 查詢緩存并不一定帶來(lái)性能上的提升,在某些情況下(比如查詢數(shù)量大,但重復(fù)的查詢很少)開(kāi)啟查詢緩存會(huì)帶來(lái)性能的下降。

原理

RDS MySQL對(duì)來(lái)自客戶端的查詢(Select)進(jìn)行Hash計(jì)算得到該查詢的Hash值,通過(guò)該Hash值到查詢緩存中匹配該查詢的結(jié)果。

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

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

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

限制

  • 查詢必須嚴(yán)格一致(大小寫(xiě)、空格、使用的數(shù)據(jù)庫(kù)、協(xié)議版本、字符集等必須一致)才可以命中,否則視為不同查詢。
  • 不緩存查詢中的子查詢結(jié)果集,僅緩存查詢最終結(jié)果集。
  • 不緩存存儲(chǔ)函數(shù)(Stored Function)、存儲(chǔ)過(guò)程(Stored Procedure)、觸發(fā)器(Trigger)、事件(Event)中的查詢。
  • 不緩存含有每次執(zhí)行結(jié)果變化的函數(shù)的查詢,比如now()、curdate()、last_insert_id()、rand()等。
  • 不緩存對(duì)mysql、information_schema、performance_schema系統(tǒng)數(shù)據(jù)庫(kù)表的查詢。
  • 不緩存使用臨時(shí)表的查詢。
  • 不緩存產(chǎn)生告警(Warnings)的查詢。
  • 不緩存Select … lock in share mode、Select … for update、 Select * from … where autoincrement_col is NULL類(lèi)型的查詢。
  • 不緩存使用用戶定義變量的查詢。
  • 不緩存使用Hint - SQL_NO_CACHE的查詢。

設(shè)置

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

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

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

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

    • query_cache_type:是否開(kāi)啟查詢緩存功能。

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

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

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

    重要
    • 修改query_cache_type需要重啟實(shí)例(修改后實(shí)例會(huì)自動(dòng)重啟)。
    • 參數(shù)query_cache_size要求設(shè)置值為1024的整數(shù)倍,否則會(huì)提示指定參數(shù)無(wú)效
  • 開(kāi)啟

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

  • 關(guān)閉

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

  • 建議
    • query_cache_size不建議設(shè)置的過(guò)大。過(guò)大的空間不但擠占實(shí)例其他內(nèi)存結(jié)構(gòu)的空間,而且會(huì)增加在緩存中搜索的開(kāi)銷(xiāo)。建議根據(jù)實(shí)例規(guī)格,初始值設(shè)置為10MB到100 MB之間的值,而后根據(jù)運(yùn)行使用情況調(diào)整。
    • 建議通過(guò)調(diào)整query_cache_size的值來(lái)開(kāi)啟、關(guān)閉查詢緩存,因?yàn)樾薷膓uery_cache_type參數(shù)需要重啟實(shí)例生效。
    • 查詢緩存適用于特定的場(chǎng)景,建議充分測(cè)試后,再考慮開(kāi)啟,避免引起性能下降或引入其他問(wèn)題。

驗(yàn)證效果

  • 控制臺(tái)
  • SQL命令

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

    show global status like ‘Qca%’;
    • Qcache_hits:查詢緩存命中次數(shù)。

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

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

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