mysql 3級快取 MySql高階三 快取

2021-10-17 17:49:49 字數 2641 閱讀 7003

1、快取包括:

(1)、快取查詢計畫避免二次詞法語法解析、優化、執行。

(2)、快取mysql查詢語句返回的完整結果,被命中時,mysql會理解返回結果,省去解析、優化和執行等步驟。

2、如何命中快取?

mysql儲存結果於快取中:把select語句本身做hash計算,計算的結果作為key,查詢結果作為value

因此在寫sql語句時,大小寫以及順序等要統一,這樣快取的機率就大。

3、什麼樣的語句不會被快取?

查詢語句中有一些不確定資料時,不會快取:如now(),current_time();

一般來說,如果查詢中包含使用者自定義函式、儲存函式、使用者變數、臨時表、

mysql庫中系統表或者許可權表,一般都不會被快取。

4、快取帶來的額外開銷?

每個查詢都得先檢查是否命中。

查詢結果要先快取。

mysql>show global variables like 'query_cache%';

| variable_name           | value   |

| query_cache_limit        | 1048576 |

| query_cache_min_res_unit   | 4096    |

| query_cache_size         | 16777216 |

| query_cache_type         | on     |

| query_cache_wlock_invalidate | off     |

(1)、query_cache_type:是否開啟快取功能,

其值有三種on|off|demand,

其中demand如果要快取需要在select語句中需要顯示指明 sql_cache

(2)、query_cache_size:

快取總空間,單位位元組,大小必須為1024的整數倍,從上面可以看出缺省16m。

如果變更大小,會清空當前快取,因此最好開始就設定好。

(3)、query_cache_min_res_unit:儲存快取的最小記憶體塊。

(query_cahce_size-qcache_free_memory)/qcache_queries_in_cache

即(快取總空間-空閒快取空間)/快取個數

(4)、query_cache_limit:

單個快取物件的最大值,超過則不快取。從上面可以看出缺省1m。

可以手動使用sql_no_cache人為地避免嘗試快取返回查詢結果超出此引數限定值的語句。

(5)、query_cache_wlock_invalidate:

如果某錶被其他使用者連線鎖住了,是否仍然從快取中返回結果,off為返回,建議使用off返回。

6、如果判斷快取命中率:

(1)、mysql>show global status like 'qcache%';

| variable_name           | value    |

| qcache_free_blocks      | 1        |

| qcache_free_memory      | 16757128 |

| qcache_hits             | 3        |

| qcache_inserts          | 2        |

| qcache_lowmem_prunes    | 0        |

| qcache_not_cached       | 29       |

| qcache_queries_in_cache | 2        |

| qcache_total_blocks     | 6        |

qcache_hits :命中快取的次數。

qcache_inserts:寫入快取的次數。

qcache_free_memory:空閒快取空間。

qcache_total_blocks:已申請的塊數。

qcache_free_blocks:空閒塊數。

qcache_queries_in_cache:快取個數

qcache_not_cached:未被快取個數

qcache_lowmem_prunes:因快取總空間太小,進行修減(騰出老快取的次數)記憶體的次數。

(2)、命中率指標:

mysql>show global status where variable_name='qcache_hits' or variable_name='com_select';

| variable_name | value |

| com_select   | 35   |

| qcache_hits  | 3    |

此值如果大於3:1,則表明快取也是有效,能達到10:1,則比較理想;否則關閉快取比較好。

7、碎片整理:

flush query_cache

8、清空快取:

reset query_cache

9、快取優化思路:

(1)、批量寫入,可以提高快取命中率。

(2)、快取空間不宜過大,否則會因為大量快取同時失效造成伺服器假死。

(3)、必要時使用sql_cache或sql_no_cache手動控制快取。

(4)、對寫密集型應用場景來說,禁用快取反而提高效能。

mysql 3 備份恢復

先檢視資料庫表的資料,這裡面時000001裡面的資料 將資料以sql的形式備份到 tmp目錄下,備份的是000001的資料 mysqldump uroot mysql l f tmp mysql1.sql l 鎖表,在備份的時候不讓其他客戶端運算元據庫,以免備份資料不完整 f 即flush logs...

mysql 3 事務隔離

1.事務就是要保證一組資料庫操作,要麼全部成功,要麼全部失敗 2.在 mysql 中,事務支援是在引擎層實現的 3.mysql 是乙個支援多引擎的系統,但並不是所有的引擎都支援事務。比如 mysql 原生的 myisam 引擎就不支援事務,這也是 myisam 被 innodb 取代的重要原因之一。...

mysql 3 資料型別

mysql 中定義資料欄位的型別對你資料庫的優化是非常重要的。mysql 支援多種型別,大致可以分為三類 數值 日期 時間和字串 字元 型別。邏輯性對應 boolean 關鍵字int 是integer 的同義詞,關鍵字 dec是 decimal 的同義詞。bit資料型別儲存位字段值,並且支援 myi...