日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql缓存 碎片_Mysql查询缓存碎片、缓存命中率及Nagios监控

發(fā)布時(shí)間:2024/10/12 数据库 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql缓存 碎片_Mysql查询缓存碎片、缓存命中率及Nagios监控 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Mysql?的優(yōu)化方案,在互聯(lián)網(wǎng)上可以查找到非常多資料,今天對(duì)Mysql緩存碎片和命中率作了詳細(xì)了解,個(gè)人作了簡(jiǎn)單整理。

一、Mysql查詢緩存碎片和緩存命中率。

mysql> SHOW STATUS LIKE 'qcache%';

+-------------------------+-----------+

| Variable_name | Value |

+-------------------------+-----------+

| Qcache_free_blocks | 5 |

| Qcache_free_memory | 134176648 |

| Qcache_hits | 110 |

| Qcache_inserts | 245 |

| Qcache_lowmem_prunes | 0 |

| Qcache_not_cached | 7119 |

| Qcache_queries_in_cache | 9 |

| Qcache_total_blocks | 31 |

+-------------------------+-----------+

8 rows in set (0.01 sec)

MySQL?查詢緩存變量

變量名

說(shuō)明

Qcache_free_blocks

緩存中相鄰內(nèi)存塊的個(gè)數(shù)。數(shù)目大說(shuō)明可能有碎片。FLUSH?QUERY?CACHE會(huì)對(duì)緩存中的碎片進(jìn)行整理,從而得到一個(gè)空閑塊。

Qcache_free_memory

緩存中的空閑內(nèi)存。

Qcache_hits

每次查詢?cè)诰彺嬷忻袝r(shí)就增大。

Qcache_inserts

每次插入一個(gè)查詢時(shí)就增大。命中次數(shù)除以插入次數(shù)就是不中比率;用?1減去這個(gè)值就是命中率。在上面這個(gè)例子中,大約有87%的查詢都在緩存中命中。

Qcache_lowmem_prunes

緩存出現(xiàn)內(nèi)存不足并且必須要進(jìn)行清理以便為更多查詢提供空間的次數(shù)。這個(gè)數(shù)字最好長(zhǎng)時(shí)間來(lái)看;如果這個(gè)數(shù)字在不斷增長(zhǎng),就表示可能碎片非常嚴(yán)重,或者內(nèi)存很少。(上面的?free_blocks和free_memory可以告訴您屬于哪種情況)。

Qcache_not_cached

不適合進(jìn)行緩存的查詢的數(shù)量,通常是由于這些查詢不是?SELECT語(yǔ)句。

Qcache_queries_in_cache

當(dāng)前緩存的查詢(和響應(yīng))的數(shù)量。

Qcache_total_blocks

緩存中塊的數(shù)量。

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_min_res_unit????查詢緩存分配的最小塊的大小(字節(jié))

query_alloc_block_size????為查詢分析和執(zhí)行過(guò)程中創(chuàng)建的對(duì)象分配的內(nèi)存塊大小

Qcache_free_blocks????代表內(nèi)存自由塊的多少,反映了內(nèi)存碎片的情況

==========================

1)當(dāng)查詢進(jìn)行的時(shí)候,Mysql把查詢結(jié)果保存在qurey?cache中,但如果要保存的結(jié)果比較大,超過(guò)query_cache_min_res_unit的值?,這時(shí)候mysql將一邊檢索結(jié)果,一邊進(jìn)行保存結(jié)果,所以,有時(shí)候并不是把所有結(jié)果全部得到后再進(jìn)行一次性保存,而是每次分配一塊query_cache_min_res_unit大小的內(nèi)存空間保存結(jié)果集,使用完后,接著再分配一個(gè)這樣的塊,如果還不不夠,接著再分配一個(gè)塊,依此類推,也就是說(shuō),有可能在一次查詢中,mysql要?進(jìn)行多次內(nèi)存分配的操作。

2)內(nèi)存碎片的產(chǎn)生。當(dāng)一塊分配的內(nèi)存沒有完全使用時(shí),MySQL會(huì)把這塊內(nèi)存Trim掉,把沒有使用的那部分歸還以重?復(fù)利用。比如,第一次分配4KB,只用了3KB,剩1KB,第二次連續(xù)操作,分配4KB,用了2KB,剩2KB,這兩次連續(xù)操作共剩下的1KB+2KB=3KB,不足以做個(gè)一個(gè)內(nèi)存單元分配,?這時(shí)候,內(nèi)存碎片便產(chǎn)生了。

3)使用flush?query?cache,可以消除碎片

4)如果Qcache_free_blocks值過(guò)大,可能是query_cache_min_res_unit值過(guò)大,應(yīng)該調(diào)小些

5)query_cache_min_res_unit的估計(jì)值:(query_cache_size?-?Qcache_free_memory)?/?Qcache_queries_in_cache

檢查查詢緩存使用情況

檢查是否從查詢緩存中受益的最簡(jiǎn)單的辦法就是檢查緩存命中率

當(dāng)服務(wù)器收到SELECT語(yǔ)句的時(shí)候,Qcache_hits和Com_select這兩個(gè)變量會(huì)根據(jù)查詢緩存

的情況進(jìn)行遞增

查詢緩存命中率的計(jì)算公式是:Qcache_hits/(Qcache_hits?+?Com_select)。

mysql>?show?status?like?'%Com_select%';

+---------------+-------+

|?Variable_name?|?Value?|

+---------------+-------+

|?Com_select????|?1?????|

+---------------+-------+

1?row?in?set?(0.00?sec)

此時(shí)的查詢緩存命中率:3/(3+1)=75%;由于個(gè)人的測(cè)試數(shù)據(jù)庫(kù),查詢較少,更行更少,命中率頗高。

http://blog.chinaunix.net/uid-25266990-id-3426963.html

總結(jié)

以上是生活随笔為你收集整理的mysql缓存 碎片_Mysql查询缓存碎片、缓存命中率及Nagios监控的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。