六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

解析MySQL高速緩存打開方法及參數(query_cache_size)

[摘要]MySQL query cache從4.1版本開始提供了,不過值今天本人才對其進行研究。默認配置下,MySQL的該功能是沒有啟動的,可能你通過show variables like ‘%query_cache%;會發(fā)現其變量have_query_cache的值是yes,MYSQL初學者很容易以為這...
MySQL query cache從4.1版本開始提供了,不過值今天本人才對其進行研究。默認配置下,MySQL的該功能是沒有啟動的,可能你通過show variables like ‘%query_cache%';會發(fā)現其變量have_query_cache的值是yes,MYSQL初學者很容易以為這個參數為YES就代表開啟了查詢緩存,實際上是不對的,該參數表示當前版本的MYSQL是否支持Query Cache,實際上是否開啟查詢緩存是看另外一個參數的值:query_cache_size ,該值為0,表示禁用query cache,而默認配置正是配置為0。


配置方法:

在MYSQL的配置文件my.ini或my.cnf中找到如下內容:

# Query cache is used to cache SELECT results and later return them

# without actual executing the same query once again. Having the query

# cache enabled may result in significant speed improvements, if your

# have a lot of identical queries and rarely changing tables. See the

# “Qcache_lowmem_prunes” status variable to check if the current value

# is high enough for your load.

# Note: In case your tables change very often or if your queries are

# textually different every time, the query cache may result in a

# slowdown instead of a performance improvement.
query_cache_size=0

以上信息是默認配置,其注釋意思是說,MYSQL的查詢緩存用于緩存select查詢結果,并在下次接收到同樣的查詢請求時,不再執(zhí)行實際查詢處理而直接返回結果,有這樣的查詢緩存能提高查詢的速度,使查詢性能得到優(yōu)化,前提條件是你有大量的相同或相似的查詢,而很少改變表里的數據,否則沒有必要使用此功能。可以通過Qcache_lowmem_prunes變量的值來檢查是否當前的值滿足你目前系統的負載。注意:如果你查詢的表更新比較頻繁,而且很少有相同的查詢,最好不要使用查詢緩存。

具體配置方法:

1.將query_cache_size設置為具體的大小,具體大小是多少取決于查詢的實際情況,但最好設置為1024的倍數,參考值32M。

2.增加一行:query_cache_type=1

query_cache_type參數用于控制緩存的類型,注意這個值不能隨便設置,必須設置為數字,可選項目以及說明如下:


如果設置為0,那么可以說,你的緩存根本就沒有用,相當于禁用了。但是這種情況下query_cache_size設置的大小系統是否要為其分配呢,這個問題有待于測試?

如果設置為1,將會緩存所有的結果,除非你的select語句使用SQL_NO_CACHE禁用了查詢緩存。

如果設置為2,則只緩存在select語句中通過SQL_CACHE指定需要緩存的查詢。

OK,配置完后的部分文件如下:

query_cache_size=128M

query_cache_type=1
保存文件,重新啟動MYSQL服務,然后通過如下查詢來驗證是否真正開啟了:

mysql> show variables like ‘%query_cache%';

+——————————+———–+

  Variable_name                  Value      

+——————————+———–+

  have_query_cache               YES        

  query_cache_limit              1048576    

  query_cache_min_res_unit       4096       

  query_cache_size               134217728  

  query_cache_type               ON         

  query_cache_wlock_invalidate   OFF        

+——————————+———–+

6 rows in set (0.00 sec)


主要看query_cache_size和query_cache_type的值是否跟我們設的一致:

這里query_cache_size的值是134217728,我們設置的是128M,實際是一樣的,只是單位不同,可以自己換算下:134217728 = 128*1024*1024。

query_cache_type設置為1,顯示為ON,這個前面已經說過了。

總之,看到上邊的顯示表示設置正確,但是在實際的查詢中是否能夠緩存查詢,還需要手動測試下,我們可以通過show status like ‘%Qcache%';語句來測試,現在我們開啟了查詢緩存功能,在執(zhí)行查詢前,我們先看看相關參數的值:

mysql> show status like ‘%Qcache%';

+————————-+———–+

  Variable_name             Value      

+————————-+———–+

  Qcache_free_blocks        1          

  Qcache_free_memory        134208800  

  Qcache_hits               0          

  Qcache_inserts            0          

  Qcache_lowmem_prunes      0          

  Qcache_not_cached         2          

  Qcache_queries_in_cache   0          

  Qcache_total_blocks       1          

+————————-+———–+

8 rows in set (0.00 sec)


這里順便解釋下這個幾個參數的作用:

Qcache_free_blocks:表示查詢緩存中目前還有多少剩余的blocks,如果該值顯示較大,則說明查詢緩存中的內存碎片過多了,可能在一定的時間進行整理。

Qcache_free_memory:查詢緩存的內存大小,通過這個參數可以很清晰的知道當前系統的查詢內存是否夠用,是多了,還是不夠用,DBA可以根據實際情況做出調整。

Qcache_hits:表示有多少次命中緩存。我們主要可以通過該值來驗證我們的查詢緩存的效果。數字越大,緩存效果越理想。

Qcache_inserts: 表示多少次未命中然后插入,意思是新來的SQL請求在緩存中未找到,不得不執(zhí)行查詢處理,執(zhí)行查詢處理后把結果insert到查詢緩存中。這樣的情況的次數,次數越多,表示查詢緩存應用到的比較少,效果也就不理想。當然系統剛啟動后,查詢緩存是空的,這很正常。

Qcache_lowmem_prunes:該參數記錄有多少條查詢因為內存不足而被移除出查詢緩存。通過這個值,用戶可以適當的調整緩存大小。

Qcache_not_cached: 表示因為query_cache_type的設置而沒有被緩存的查詢數量。

Qcache_queries_in_cache:當前緩存中緩存的查詢數量。

Qcache_total_blocks:當前緩存的block數量。
下邊我們測試下:

比如執(zhí)行如下查詢語句

mysql> select * from user where id = 2;

+—-+——-+

  id   name   

+—-+——-+

   2   test2  

+—-+——-+

1 row in set (0.02 sec)


然后執(zhí)行show status like ‘%Qcache%',看看有什么變化:

mysql> show status like ‘%Qcache%';

+————————-+———–+

  Variable_name             Value      

+————————-+———–+

  Qcache_free_blocks        1          

  Qcache_free_memory        134207264  

  Qcache_hits               0          

  Qcache_inserts            1          

  Qcache_lowmem_prunes      0          

  Qcache_not_cached         3          

  Qcache_queries_in_cache   1          

  Qcache_total_blocks       4          

+————————-+———–+

8 rows in set (0.00 sec)


對比前面的參數值,我們發(fā)現Qcache_inserts變化了。Qcache_hits沒有變,下邊我們在執(zhí)行同樣的查詢

select * from user where id = 2,按照前面的理論分析:Qcache_hits應該等于1,而Qcache_inserts應該值不變(其他參數的值變化暫時不關注,讀者可以自行測試),再次執(zhí)行:
show status like ‘%Qcache%',看看有什么變化:

mysql> show status like ‘%Qcache%';

+————————-+———–+

  Variable_name             Value      

+————————-+———–+

  Qcache_free_blocks        1          

  Qcache_free_memory        134207264  

  Qcache_hits               1          

  Qcache_inserts            1          

  Qcache_lowmem_prunes      0          

  Qcache_not_cached         4          

  Qcache_queries_in_cache   1          

  Qcache_total_blocks       4          

+————————-+———–+

8 rows in set (0.00 sec)


OK,果然跟我們分析的完全一致。


以上就是解析MySQL高速緩存啟動方法及參數(query_cache_size)的詳細內容,更多請關注php中文網其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。




主站蜘蛛池模板: 人人做天天爱夜夜爽中字 | 三区在线观看 | 日韩精品久久不卡中文字幕 | 日本色站 | 天天色播 | 日日夜夜摸 | 性欧美xxxx性| 午夜手机视频 | 外国成人网在线观看免费视频 | 亚洲国产成人久久综合一区 | 亚洲高清综合 | 全部免费毛片在线 | 亚洲韩国日本欧美一区二区三区 | 亚洲人成激情在线播放 | 青青青爽在线视频免费观看 | 五月婷婷色综合 | 青草99| 青青青爽国产在线视频 | 天天干夜夜操美女 | 日韩中文在线 | 又爽又黄无遮挡高清免费视频 | 在线五月婷婷 | 欧美亚洲国产激情一区二区 | 色迷迷网免费站视频在线观看 | 欧美亚洲欧美区 | 亚洲一区二区三区高清视频 | 日本中文一二区有码在线观看 | 四虎8848| 天天射日日干 | 日毛片| 丝袜美女爽爆91 | 亚洲国产精品高清在线一区 | 日本美女高清在线观看免费 | 日本精品高清一区二区2021 | 狍和女人一级毛片 | 五月婷婷在线视频 | 五月激情五月婷婷 | 天天干天天弄 | 四虎影院永久网址 | 青春草在线免费视频 | 亚洲综合色婷婷六月丁香 |