国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

解析mysql 緩存如何使用內存

2020-01-18 23:36:49
字體:
來源:轉載
供稿:網友

先說明2點
開啟緩存也會帶來開銷,主要表現在一下方面
讀取在查詢開始之前必須要檢查緩存
如果查詢是緩存的,但是不在結果集中,那么產生結果后保存數據會帶來一定的開銷
向緩存寫如數據也會帶來開銷

有的情況查詢緩存不會被緩存,即使你使用 SQL_CACHE也不能緩存
主要一下幾個
引用了用戶自定義函數
引用了用戶自定義變量
以用了存續過程
查詢中包含一些實時的系統函數,比如now
引用了臨時表

雖然上面說到緩存會帶來一些開銷
但是緩存對mysql  還是很重要
帶來的好處比壞處多

下面講一下mysql緩存如何使用內存
查詢緩存的內存池被分為大小可變的塊,每一個快都知道自己的大小,指向前一個和后一個邏輯塊和物理塊 的指針,服務器啟動時初始化查詢緩存使用的物理內存,內存池開始咋hi要一個快,她的大小為被配置為緩存的大小減去自身需要的40KB大小。在每次緩存查詢結果時,會為查詢結果分配一個緩存塊,但是服務器無法估計需要緩存的結果的大小,至少會大于等于query_cache_min_res_unit,,服務器在分配時,不會再緩存中一次生成最終結果然后緩存發送到客戶端,而是產生一條緩存一條,這樣緩存就能保證空間不會在分配時浪費或者不足。分配內存塊的速度較慢,因為服務器需要檢查可用內存列表并且找打大小合適的快,因此服務器會盡量減少分配次數,當需要緩存結果時,他會構建一個大小至少為最小值的塊,并且把結果放在塊中,如果塊已經滿了,但是數據沒有完整保存,那么就會產生一個新塊并且保存數據,在數據存完后,如果數據塊還有空隙,服務器就會剪輯數據塊,并且把空間并入剩余的空間中,在其中可能產生碎片。通過緊縮,可以講碎片空間并入有效的數據空間中。

對于事物引擎,比如innodb,事物會影響緩存,因為臟數據也會讓其他引用了這塊數據的緩存失效。直到該事物提交或回滾之后,這塊數據才會被緩存。
query_cache_min_res_unit:the minimum size (in bytes) for blocks allocated by the query cache. The default value is 4096 (4KB)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沾化县| 那坡县| 信丰县| 鄂托克前旗| 赤峰市| 柯坪县| 牡丹江市| 伊金霍洛旗| 肇东市| 西吉县| 新龙县| 彰化县| 长丰县| 边坝县| 六枝特区| 乌苏市| 新河县| 库车县| 桂东县| 仁化县| 驻马店市| 宁国市| 堆龙德庆县| 屯门区| 长丰县| 明光市| 奉贤区| 巫山县| 连平县| 柞水县| 宁蒗| 渭南市| 章丘市| 宿州市| 阿勒泰市| 神木县| 铁岭县| 琼海市| 玉溪市| 抚宁县| 通辽市|