Mysql之BufferPool中chunk的使用及說明
BufferPool中chunk的概述
由于每次調(diào)整Buffer Pool的大小時,都需要重新向操作系統(tǒng)申請一塊連續(xù)的內(nèi)存空間,然后將舊的Buffer Pool中的內(nèi)容復(fù)制到這一塊新空間,但是這種操作是極其耗時的。
所以,InnoDB不再一次性為某個Buffer Pool實(shí)例向操作系統(tǒng)申請一大片連續(xù)的內(nèi)存空間,而是以一個chunk為單位向操作系統(tǒng)申請空間。
也就是說,一個Buffer Pool實(shí)例其實(shí)是由若干個chunk組成的。一個chunk就代表一片連續(xù)的內(nèi)存空間,里面包含了若干緩沖頁與其對應(yīng)的控制塊。
Buffer Pool包含2個實(shí)例
每個實(shí)例里包含2個chunk。
- 如下圖所示:

通過innodb_buffer_pool_chunk_size指定chunk的大小
- 如下圖所示:

【注】:8388608/1024/1024=8MB, innodb_buffer_pool_chunk_size的值并不包含緩沖頁對應(yīng)的控制塊的內(nèi)存空間大小。
因?yàn)橛衏hunk這個概念,那么針對上圖來看,BufferPool中是存在兩個實(shí)例的,并且每個BufferPool實(shí)例中,又是存在兩個chunk的。
而當(dāng)服務(wù)器運(yùn)行的時候,如果有需要調(diào)整BufferPool容量大小的情況發(fā)生,那么,就可以針對chunk為維度去執(zhí)行新增或刪除BufferPool內(nèi)存空間的操作。
如果沒有chunk的話,那么我們針對BufferPool容量調(diào)整的操作,就需要以BufferPool為維度了,那么必然需要向操作系統(tǒng)再次申請一大片的內(nèi)存空間,然后再進(jìn)行緩沖頁的拷貝操作。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
ERROR: Error in Log_event::read_log_event()
ERROR: Error in Log_event::read_log_event(): read error, data_len: 438, event_type: 22014-02-02
mysql使用SQLyog導(dǎo)入csv數(shù)據(jù)不成功的解決方法
給mysql導(dǎo)入數(shù)據(jù),選中某個表選擇導(dǎo)入--導(dǎo)入使用本地csv數(shù)據(jù)即可,單有的時候不知道什么問題導(dǎo)入不成功2014-07-07
MySQL 字符串拆分實(shí)例(無分隔符的字符串截取)
這篇文章主要介紹了MySQL 字符串拆分實(shí)例(無分隔符的字符串截取),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
Idea連接MySQL數(shù)據(jù)庫出現(xiàn)中文亂碼的問題
這篇文章主要介紹了Idea連接MySQL數(shù)據(jù)庫出現(xiàn)中文亂碼的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04

