咱們已經知道了每一行的數據的格式,以及多行數據是緊湊的合併在一塊兒。若是此時這個表的數據有一千萬行,那咱們進行查詢的時候,效率是很低的,因此mysql就會把這些數據經過數據頁的形式分割起來,相似於分組,查找的時候直接根據數據頁的信息就知道是否存在某些數據。每一個數據頁的大小是16kb,因此一個數據頁能存多少行數據,取決於這個行數據佔用多少容量,好比一行就佔用1kb,那這個數據頁就有16行,若是一行只有0.1kb,那這個數據頁就有160行,若是一行是20kb,那邊須要2個數據頁來存放。
固然數據頁不單單隻有咱們的數據,還有其餘信息。行經過數據頭的next_record單向鏈表來指向下一個行的位置,數據頁是維護一個雙向鏈表來指向每一個數據頁的關係。除了這個,數據頁還保護文件頭、文件尾、數據頁目錄等信息。
每64個連續的數據頁對應着一個數據區。每一個數據區的大小就是64*16kb=1M。
在數據區的上面,還有一個數據區組,每個數據區組保護了256個數據區,因此一個數據區組的大小是256M。
多個數據區組的數據,就是咱們的ibd文件,好比咱們表名是test,那磁盤上就有一個test.ibd文件。
mysql