MySQL查詢緩存

查詢緩存

  1. 優點:(1)對於某些頻繁出現的查詢語句,可以減少I/O。
  2. 缺點:(1)查詢緩存需要佔用一定的內存。(2)每次查詢執行前都要先檢查緩存,故不一定是有利的。
  3. 緩存未命中的原因:(1)查詢不在緩存中 (2)緩存失效 (3) 查詢中包含不確定的函數,比如current_date。因此如果查詢希望使用緩存,就直接使用當時時間的字面量,比如‘2018-1-29’這種即可。
  4. 緩存失效:(1)在InnoDB中,如果一個事務對錶進行了修改,那在事務提交前,緩存都會失效。 (2)產生了大量碎片,因爲緩存使用的分配算法是最佳分配算法(最合適的大小分給它,易產生碎片,可以通過選擇合適的塊大小來減少這種情況)

 調優手段

  1. 前面提到每次查詢都會先檢查緩存。如果需要緩存的查詢很少,可以將query_cache_type設置爲demand,然後對需要緩存的查詢後面添加sql_cache。這樣可以更細粒度的控制緩存的使用
  2. 如果寫入操作很多(前面提到修改表的時候會使緩存失效),這個時候可以禁用緩存,並將緩存大小query_cache_size設置爲0,這樣就不會佔用內存。
  3. 基於上一條,如果兩者都要,那麼就讓寫操作成批量的執行,而不是逐個執行。

  調優參數

  1. query_cache_type:既是會話級變量也是全局性變量。有on/off/demand三個屬性
  2. query_min_cache_res_unit:設置分配緩存最小塊大小。
  3. query_cache_limit:限制緩存存儲的最大結果,超過不會被緩存




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章