mysql 減少快取碎片

2021-09-30 09:11:32 字數 779 閱讀 1174

沒有辦法避免所有的碎片,但是仔細選擇query_cache_min_res_unit 可以有效的避免記憶體浪費,query_cache_min_res_unit 過大會產生記憶體浪費和碎片,query_cache_min_res_unit 過小導致記憶體經常allocate 也回帶來效能影響,所以query_cache_min_res_unit 的設定很關鍵。

要找乙個既能減少碎片,又能避免過多分配記憶體的情況可以嘗試一下的方法,求出平均的快取大小,(query_cache_size-qcache_free_memory)/qcache_in_queries 這樣可以求出平均的快取結果大小,如果快取的大小分布的不均勻,那麼就很難找到合適的大小,但是我們對於大結果最好不要快取在mysql伺服器端,我們可以採用第三方的應用快取伺服器快取,這樣就能大概估算query_cache_limit的大小。從而能找到乙個平衡點。

同時我們可以通過query_free_blocks來測試快取中碎片的情況,他說明快取中有多少記憶體塊處於空閒狀態,可以試想一下,碎片最嚴重的情況應該是在兩個快取塊之間就有乙個空閒的比最小值還小的塊,但是同時還有一種可能是前一半是連續存蓄的後一半是空的,如果qcache_free_blocks=qcache_total_blocks/2,那麼極有可能是碎片很嚴重的情況,你可以從qcache_lowmem_prunes引數看出,如果qcache_lowmem_prunes在增加並且還有大量的空閒塊,那麼就說明碎片確實是很嚴重。可以使用flush  querycache命令移除碎片,她會把所有的存蓄塊移動到一端,把空閒塊移動到另外一端!reset  query  cache 會把查詢從快取中移除!

mysql快取 碎片 mysql查詢快取的記憶體碎片

query cache min res unit 查詢快取分配的最小塊的大小 位元組 query alloc block size 為查詢分析和執行過程中建立的物件分配的記憶體塊大小 qcache free blocks代表記憶體自由塊的多少,反映了記憶體碎片的情況 1 當查詢進行的時候,mysql...

mysql碎片空間 mysql碎片應用

1.查詢結果集中自增功能 set i 0 select i i 1 id 2.資料庫備份 mysqldump database uroot p beifen.sql 3.資料庫表空間tablespace優化 show table status from database like table nam...

分配記憶體時如何減少記憶體碎片

感覺面試的時候經常會被問到這個問題,然後我也學習了一下memcached的slab機制,發現很多伺服器都是使用這種機制來分配記憶體,所以決定學習一下。首先,先對記憶體分配中的夥伴系統有初步的了解 在程式設計和使用的伺服器軟體中,經常需要分配一組連續的頁框,而頻繁地申請和釋放不同大小的連續頁框,必然導...