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

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

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

