mysql緩存
可以通過如下命令查看現在緩存的情況
[java]view plain
mysql>showstatuslike'qcache%';
+-------------------------+----------+
|Variable_name|Value|
+-------------------------+----------+
|Qcache_free_blocks|1|
|Qcache_free_memory|10475424|
|Qcache_hits|1|
|Qcache_inserts|1|
|Qcache_lowmem_prunes|0|
|Qcache_not_cached|0|
|Qcache_queries_in_cache|1|
|Qcache_total_blocks|4|
+-------------------------+----------+
8rowsinset(0.00sec)
其中各個參數的意義如下:
Qcache_free_blocks:緩存中相鄰內存塊的個數。數目大說明可能有碎片。FLUSH QUERY CACHE會對緩存中的碎片進行整理,從而得到一個空閑塊。
Qcache_free_memory:緩存中的空閑內存。
Qcache_hits:每次查詢在緩存中命中時就增大
Qcache_inserts:每次插入一個查詢時就增大。命中次數除以插入次數就是不中比率。
Qcache_lowmem_prunes:緩存出現內存不足並且必須要進行清理以便為更多查詢提供空間的次數。這個數字最好長時間來看;如果這個 數字在不斷增長,就表示可能碎片非常嚴重,或者內存很少。(上面的 free_blocks和free_memory可以告訴您屬於哪種情況)
Qcache_not_cached:不適合進行緩存的查詢的數量,通常是由於這些查詢不是 SELECT 語句或者用了now()之類的函數。
Qcache_queries_in_cache:當前緩存的查詢(和響應)的數量。
Qcache_total_blocks:緩存中塊的數量。
② mysql 一級緩存和二級緩存的區別
一、Session緩存(又稱作事務緩存):Hibernate內置的,不能卸除。
緩存范圍:緩存只能被當前Session對象訪問。緩存的生命周期依賴於Session的生命周期,當Session被關閉後,緩存也就結束生命周期。
Hibernate一些與一級緩存相關的操作(時間點):
數據放入緩存:
1. save()。當session對象調用save()方法保存一個對象後,該對象會被放入到session的緩存中。
2. get()和load()。當session對象調用get()或load()方法從資料庫取出一個對象後,該對象也會被放入到session的緩存中。
3. 使用HQL和QBC等從資料庫中查詢數據。
二、SessionFactory緩存(又稱作應用緩存):使用第三方插件,可插拔。
③ mysql查詢時怎麼不用緩存
設置好查詢緩存的大小就行了。比如設置個20MB.
SET GLOBAL QUERY_CACHE_SIZE=20000000;
mysql會將查詢SQL和結果集存到緩存中,等下次遇到相同的SQL語句時,結果集從緩存中讀取。
不設置就不用緩存了
④ 如何增加mysql數據的最大緩存大小
my.ini文件中
[wampmysqld]
port =3306
socket =/tmp/mysql.sock
key_buffer_size=16M//改這里
max_allowed_packet=1M
sort_buffer_size=512K
net_buffer_length=8K
read_buffer_size=256K
read_rnd_buffer_size=512K
myisam_sort_buffer_size=8M
PS 如果是安裝版的mysql 你需要改的MY.ini 可能是在
C:ProgramDataMySQLMySQLServer5.7
這個目錄有可能是隱藏的目錄,你可以設置文件夾屬性,顯示所有文件
⑤ MYSQL會把查詢的結果緩存多久
設置好查詢緩存的大小就行了。比如設置個20MB. SET GLOBAL QUERY_CACHE_SIZE=20000000; mysql會將查詢SQL和結果集存到緩存中,等下次遇到相同的SQL語句時,結果集從緩存中讀齲 不設置就不用緩存了
⑥ mysql緩存什麼情況下會釋放
在多次查詢查詢時做數據緩存,memcache
-------------------------------------
答題不易,敬請採納,以顯鼓勵!