設置好查詢緩存的大小就行了。比如設置個20MB.
SET GLOBAL QUERY_CACHE_SIZE=20000000;
mysql會將查詢SQL和結果集存到緩存中,等下次遇到相同的SQL語句時,結果集從緩存中讀取。
不設置就不用緩存了
『貳』 mysql生產環境下到底需不需要開查詢緩存
開查詢緩存可以加快查詢速度,因為是把結果先放到了緩存中,存取會快
『叄』 mysql資料庫使用哪一關鍵字可以開啟查詢高速緩存
估計過使用的MySQL是可以開啟查詢高速黃村的
『肆』 mysql 如何設置查詢緩存
mysql> SHOW VARIABLES LIKE '%query_cache%';
『伍』 MYSQL會把查詢的結果緩存多久
設置好查詢緩存的大小就行了。比如設置個20MB. SET GLOBAL QUERY_CACHE_SIZE=20000000; mysql會將查詢SQL和結果集存到緩存中,等下次遇到相同的SQL語句時,結果集從緩存中讀齲 不設置就不用緩存了
『陸』 有想使用memcache緩存mysql查詢的嗎
memcache是key-value形式的內存緩存nosql ,提高你程序的性能,看你的業務需求了,mysql是關系型資料庫
『柒』 mysql的緩存命中率為何為0解決方案
MySQL緩存命中率概述
工作原理:
查詢緩存的工作原理,基本上可以概括為: 緩存SELECT操作或預處理查詢(注釋:5.1.17開始支持)的結果集和SQL語句; 新的SELECT語句或預處理查詢語句,先去查詢緩存,判斷是否存在可用的記錄集,判斷標准:與緩存的SQL語句,是否完全一樣,區分大小寫;
查詢緩存對什麼樣的查詢語句,無法緩存其記錄集,大致有以下幾類:
1、 查詢語句中加了SQL_NO_CACHE參數;
2、查詢語句中含有獲得值的函數,包涵自定義函數,如:CURDATE()、GET_LOCK()、RAND()、CONVERT_TZ等;
3、 對系統資料庫的查詢:mysql、information_schema 查詢語句中使用SESSION級別變數或存儲過程中的局部變數;
4、查詢語句中使用了LOCK IN SHARE MODE、FOR UPDATE的語句 查詢語句中類似SELECT …INTO 導出數據的語句;
5、對臨時表的查詢操作; 存在警告信息的查詢語句; 不涉及任何錶或視圖的查詢語句; 某用戶只有列級別許可權的查詢語句;
6、 事務隔離級別為:Serializable情況下,所有查詢語句都不能緩存;
提高緩存命中率的建議
利用緩存中的數據具有比較嚴格的條件。其實這些條件也是合情合理的。主要是為了保障數據的一致性。對以上這些條件有深入的認識之後,現在資料庫管理員需要考慮的是,如何來提高這個緩存的命中率?對此筆者有如下幾個建議。
一是在配置時,客戶端與伺服器端要使用相同的字元集。如果客戶端(或者說第三方工具)與伺服器端使用的字元集不同,那麼任何情況下都不會使用緩存功能。特別在國內,需要用到中文的字元集。此時特別需要注意,客戶端默認字元集要與伺服器端的默認字元集相同。注意,這里是相同,而不是兼容。有時候即使採用了不同的字元集,客戶端上仍然可以正常顯示。這主要是因為有些字元集雖然不相同,但是是相互兼容的。在緩存管理上,需要相同,光兼容還不行。
二是在客戶端上,要固化查詢的語句。如現在有財務人員和采購人員同時從系統中查詢11月份的出貨數據。顯然他們崗位職責不同,所需要欄位的內容是不同的。此時在客戶端出,可以允許用戶設置自己所需要的表單格式。但是筆者建議,後台所採用的SQL語句最好是相同的。這里數據會經過三個渠道:後台資料庫、客戶端、用戶。筆者的意識時,後台資料庫與客戶端之間的交互採用相同的SQL語句。然後客戶端與用戶之間進行交互時,根據用戶定義的格式(包括欄位前後的排列、不包括查詢條件語句的差異)向用戶顯示數據。此時由於採用了相同的SQL語句(只是用戶對於顯示格式的要求不同),從而可以提高應用系統的查詢效率。
三是提高內存中緩存的配置,來提高命中率。一般在伺服器啟動時,操作系統會跟資料庫軟體協商緩存空間的大小。當緩存工作不足時,緩存中最舊的緩存記錄會被最新的消息所覆蓋。可見,如果能夠提高緩存空間,就可以提高命中率。這就好像打靶,目標多了,命中的幾率也會高許多。不過用戶的並發數越多,這個設置的效果會越不明顯。
四是通過分區表可以提高緩存的命中率。在上面的條件分析中,大家可以看到,只要所查詢的表中插入了一條記錄,系統就會清空緩存記錄。現在以查詢出貨記錄為例。出貨記錄表每天都在更新,而用戶在年初時,會經常需要查詢上一年的出貨記錄。此時由於這個表中的數據每個小時都在更新,那麼緩存中的信息會不斷的被情況。此時緩存的命中率顯然不會很高。針對這種情況,筆者建議可以採用分區表。如可以通過系統設置,將2010年的出貨記錄單獨存放在一個出貨的分區表中。即每一個年度都使用一張單獨的分區表。此時2011年的紀錄,就不會影響到2010年的分區表。此時如果用戶重復查詢2010年的出貨信息,只要其使用的SQL語句相同(沒有採用不同的查詢條件),那麼就可以享受緩存機制所帶來的效益,提高應用系統的查詢效果。。
多個應用對緩存的影響
通常情況下,MySQL資料庫的緩存是根據伺服器內存的大小自動分配的。如果一台伺服器上只有一個MySQL應用,那麼固然最好。不過在實際工作中,為了降低信息化投資的成本,往往會在同一台伺服器上布置多個信息化應用。由於其他信息化應用也需要使用內存的空間作為緩存,那麼MySQL資料庫中緩存空間就可能變小。如果遇到這種情況下,資料庫管理員需要跟系統工程師進行協商,為各種不同的應用根據性能要求的不同,手工設置不同的緩存空間。如此的話,就可以避免同一台伺服器上不同信息化應用對緩存的沖突。