麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > 文庫 > 正文

MySQ的Buffer pool是啥

2024-09-07 22:12:46
字體:
來源:轉載
供稿:網友
  通過前邊的嘮叨我們知道,對于使用InnoDB作為存儲引擎的表來說,不管是用于存儲用戶數據的索引(包括聚簇索引和二級索引),還是各種系統數據,都是以頁的形式存放在表空間中的,而所謂的表空間只不過是InnoDB對文件系統上一個或幾個實際文件的抽象,也就是說我們的數據說到底還是存儲在磁盤上的。但是各位也都知道,磁盤的速度慢的跟烏龜一樣,怎么能配得上“快如風,疾如電”的CPU呢?所以InnoDB存儲引擎在處理客戶端的請求時,當需要訪問某個頁的數據時,就會把完整的頁的數據全部加載到內存中,也就是說即使我們只需要訪問一個頁的一條記錄,那也需要先把整個頁的數據加載到內存中。將整個頁加載到內存中后就可以進行讀寫訪問了,在進行完讀寫訪問之后并不著急把該頁對應的內存空間釋放掉,而是將其緩存起來,這樣將來有請求再次訪問該頁面時,就可以省去磁盤IO的開銷了。
 
  Buffer Pool內部組成
  Buffer Pool中默認的緩存頁大小和在磁盤上默認的頁大小是一樣的,都是16KB。為了更好的管理這些在Buffer Pool中的緩存頁,設計InnoDB的大叔為每一個緩存頁都創建了一些所謂的控制信息,這些控制信息包括該頁所屬的表空間編號、頁號、緩存頁在Buffer Pool中的地址、鏈表節點信息、一些鎖信息以及LSN信息(鎖和LSN我們之后會具體嘮叨,現在可以先忽略),當然還有一些別的控制信息,我們這就不全嘮叨一遍了,挑重要的說嘛~
 
  每個緩存頁對應的控制信息占用的內存大小是相同的,我們就把每個頁對應的控制信息占用的一塊內存稱為一個控制塊吧,控制塊和緩存頁是一一對應的,它們都被存放到 Buffer Pool 中,其中控制塊被存放到 Buffer Pool 的前邊,緩存頁被存放到 Buffer Pool 后邊,所以整個Buffer Pool對應的內存空間看起來就是這樣的:
 
  MySQ的Buffer pool是什么
 
  咦?控制塊和緩存頁之間的那個碎片是個什么玩意兒?你想想啊,每一個控制塊都對應一個緩存頁,那在分配足夠多的控制塊和緩存頁后,可能剩余的那點兒空間不夠一對控制塊和緩存頁的大小,自然就用不到嘍,這個用不到的那點兒內存空間就被稱為碎片了。當然,如果你把Buffer Pool的大小設置的剛剛好的話,也可能不會產生碎片~
 
  小貼士: 每個控制塊大約占用緩存頁大小的5%,在MySQL5.7.21這個版本中,每個控制塊占用的大小是808字節。而我們設置的innodb_buffer_pool_size并不包含這部分控制塊占用的內存空間大小,也就是說InnoDB在為Buffer Pool向操作系統申請連續的內存空間時,這片連續的內存空間一般會比innodb_buffer_pool_size的值大5%左右。
 
  free鏈表的管理
  當我們最初啟動MySQL服務器的時候,需要完成對Buffer Pool的初始化過程,就是先向操作系統申請Buffer Pool的內存空間,然后把它劃分成若干對控制塊和緩存頁。但是此時并沒有真實的磁盤頁被緩存到Buffer Pool中(因為還沒有用到),之后隨著程序的運行,會不斷的有磁盤上的頁被緩存到Buffer Pool中。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩视频www| 国产一级毛片国语版 | 午夜影视一区二区 | 亚洲国产高清一区 | 国产精品91久久久 | 神秘电影91 | 免费淫视频 | 亚洲网站免费看 | 韩国草草影院 | 免费久久久| 国产一区二区高清在线 | 国产精品免费一区二区三区都可以 | 88xx成人永久免费观看 | 19禁国产精品福利视频 | 男女羞羞视频在线免费观看 | 国产99精品视频 | 久久精热 | 一级黄色毛片免费 | 国产精品一区在线看 | 国产亚洲精品久久午夜玫瑰园 | 久久精品视频黄色 | 2021免费日韩视频网 | 青青国产在线视频 | 在线播放黄色片 | 欧美一级在线免费 | 久久成人黄色 | 亚洲一区二区免费 | 国产女王女m视频vk 中文日韩 | 久久久精品福利 | 黄色羞羞 | 98国内自拍在线视频 | 高清国产午夜精品久久久久久 | 7777视频 | 视频一区二区久久 | 国产艳妇av视国产精选av一区 | 国内精品久久久久久久久久久久 | 中文字幕观看 | 色综合精品 | 欧美国产日韩在线 | 国产精品久久久久久久久久东京 | 亚洲午夜激情网 |