萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> 如何啟用MySQL的查詢語句緩存

如何啟用MySQL的查詢語句緩存

查詢語句緩存意思就是大量操作時我們會保存上次查詢的數據以減少數據庫查詢次數從而提升mysql訪問性能,下面我們一起來看如何啟用MySQL的查詢語句緩存吧。

我們寫的程序可能需要進行大量的數據庫操作。數據庫常常會成為產生瓶頸的原因。

開啟查詢語句緩存也是優化MySQL的一個策略。

MySQL 是我們開發程序常用的數據庫。它具有在內存中緩存常用查詢語句的能力,這樣一個給定的查詢語句再次被調用時,MySQL將立即從緩存中將其返回。然而, 在大多數MySQL中,這一特性默認是被禁用的。為了啟用它,向你的MySQL配置選項文件添加以下代碼;該配置文件的名稱為my.cnf,它用來聲明變量和你的MySQL服務器的行為(參看http://dev.mysql.com/doc/refman/5.1/en/option- files.html)。

啟用MySQL的查詢語句緩存:

在這裡,我們將查詢語句緩存設為64MB:

 代碼如下 復制代碼

[mysqld]
query_cache_size=64M

當前查詢語句緩存的大小,可以通過MySQL的SHOW VARIABLES命令來查看:

 代碼如下 復制代碼

mysql>SHOW VARIABLES;
...
| query_cache_size |555-55554
| query_cache_type | ON
...

我們需要不斷地試驗查詢語句緩存大小的設置。緩存太小就意味著緩存了的查詢語句很快就會過期。緩存太大就意味著搜索一個緩存可能需要花費相對較長時間;還有就是使用內存進行緩存比使用其它一些方式要好,就像有更多的web服務器處理,memcache或者操作系統的文件緩存一樣。

工作原理

查詢緩存的工作原理,基本上可以概括為:
緩存SELECT操作或預處理查詢(注釋:5.1.17開始支持)的結果集和SQL語句;
新的SELECT語句或預處理查詢語句,先去查詢緩存,判斷是否存在可用的記錄集,判斷標准:與緩存的SQL語句,是否完全一樣,區分大小寫;

查詢緩存對什麼樣的查詢語句,無法緩存其記錄集,大致有以下幾類:
查詢語句中加了SQL_NO_CACHE參數;www.111cn.net
查詢語句中含有獲得值的函數,包涵自定義函數,如:CURDATE()、GET_LOCK()、RAND()、CONVERT_TZ等;
對系統數據庫的查詢:mysql、information_schema
查詢語句中使用SESSION級別變量或存儲過程中的局部變量;
查詢語句中使用了LOCK  IN SHARE MODE、FOR UPDATE的語句
查詢語句中類似SELECT …INTO 導出數據的語句;
事務隔離級別為:Serializable情況下,所有查詢語句都不能緩存;
對臨時表的查詢操作;
存在警告信息的查詢語句;
不涉及任何表或視圖的查詢語句;
某用戶只有列級別權限的查詢語句;

查詢緩存的優缺點:

不需要對SQL語句做任何解析和執行,當然語法解析必須通過在先,直接從Query  Cache中獲得查詢結果;
查詢緩存的判斷規則,不夠智能,也即提高了查詢緩存的使用門檻,降低其效率;
Query Cache的起用,會增加檢查和清理Query Cache中記錄集的開銷,而且存在SQL語句緩存的表,每一張表都只有一個對應的全局鎖;

copyright © 萬盛學電腦網 all rights reserved