MySQL系列:查詢緩存參數

1、mysql查詢緩存概述
mysql

  1.基本概念算法

         查詢緩存的做用就是當查詢接收到一個和以前一樣的查詢,服務器將會從查詢緩存種檢索結果,而不是再次分析和執行上次的查詢。這樣就大大提升了性能,節省時間sql

        查詢緩存徹底存儲在內存空間;經過哈希表,鍵值判斷其是否命中數據庫

        加速查詢,也會帶來開銷(多了一個步驟、對寫有消耗標記失效、內存的建立回收)緩存

  2.查詢緩命中率服務器

         經過查詢語句的哈希值判斷:哈希值考慮的因素包括查詢自己、要查詢的數據庫、客戶端使用協議版本...ide

         查詢語句任何字符上的不一樣,都會致使緩存不能命中;函數

  3.不能被緩存的查詢性能

        查詢中包含用戶自定義函數、存儲函數、用戶自定義變量、臨時表、mysql庫中系統表、或者包含列級權限的表、有着不肯定值的函數(Now());spa

 

 

2、查詢緩存相關參數和配置

  1.查詢緩存變量

       MariaDB [(none)]> SHOW GLOBAL VARIABLES  LIKE '%query%';

wKioL1ciz13jneoyAAETtcZSREc701.png

    說明:

query_cache_min_res_unit查詢緩存中內存塊的最小分配單位;

                                                    較小值會減小浪費,但會致使更頻繁的內存分配操做;

                                                    較大值會帶來浪費,會致使碎片過多;

query_cache_limit可以緩存的最大查詢結果;

                                     對於有着較大結果的查詢語句,建議在SELECT中使用SQL_NO_CACHE

query_cache_size 查詢緩存總共可用的內存空間;單位是字節,必須是1024的整數倍;

query_cache_typeON, OFF, DEMAND(明確指明緩存纔會緩存,不然所有不予緩存)

           query_cache_wlock_invalidate:若是某表被其它的鏈接鎖定,是否仍然能夠從查詢緩存中返回結果;默認值爲OFF,表示能夠在表被其它鏈接鎖定的場景中繼續從緩存返回數據;ON則表示不容許;

 

  2.查詢緩存相關的狀態變量

           MariaDB [(none)]> SHOW GLOBAL STATUS LIKE 'Qcache%';

+---------------------------------------+-----------------+

| Variable_name                       | Value            |

+---------------------------------------+-----------------+

| Qcache_free_blocks              | 1                    |      空閒內存塊數,內存中可能不是連續的塊,多個組成所有大小

| Qcache_free_memory          | 16759688    |      空閒的內存空間

| Qcache_hits                            | 0                   |    命中次數

| Qcache_inserts                       | 0                  |    可緩存查詢語句被放入緩存的次數

| Qcache_lowmem_prunes     | 0                   |     內存太少,而使用LRU算法清理的次數

| Qcache_not_cached              | 0                  |    可緩存卻沒有被緩存的結果

| Qcache_queries_in_cache    | 0                   |    在當前緩存空間中被緩存下的語句個數

| Qcache_total_blocks              | 1                   |      總共有多少內存單元

+----------------------------------------+----------------+

        緩存命中率的評估公式:Qcache_hits/(Qcache_hits+Com_select)

         Com_selectmysql執行的查詢語句,緩存中命中是不會記錄的

相關文章
相關標籤/搜索