數據庫邏輯結構單元

0:數據庫邏輯結構包括表空間,段,區,數據塊數據庫

  一、數據庫在邏輯上是由多個表間組成的,表空間中存儲的對象是段;性能

  二、段,由區組成,好比數據段,索引段,和undo段;spa

  三、區,是磁盤分配的最小單位,是物理上連續的塊,一個extent的大小是1M,由64個頁組成;操作系統

  四、塊(頁),在MySQL中塊就是頁,是數據庫中最小的I/O單位,同時也是內存數據緩衝區的單位,及數據文件存儲空間單位,一個page的大小是16K(默認,通常也不會更改),innodb_page_size,其值應設置爲操做系統塊大小的整數倍。對象

 

一、表空間(tablespace)blog

  表空間是數據庫最大的邏輯結構,一個數據庫在邏輯上由多個表空間組成,一個表空間只隸屬於一個數據庫。索引

  一、一個表空間能夠有多數據文件,可是一個數據文件只能屬於一個表空間;圖片

  二、一個表空間就是一片磁盤區域,由一個或者多個磁盤文件組成,一個表空間能夠容納許多表、索引等。事務

 

二、段(segment)內存

  一個表就是一個段,段能夠分紅:數據段、索引段、回滾段

  一、數據段用來存儲用戶的數據,每一個表都有一個對應的回滾段,其名稱和數據表的名字相同;

  二、索引段用來存儲系統、用戶的索引信息;

  三、回滾段用來存儲用戶數據修改前的值,回退段與事務是一對多的關係,一個事務只能使用一個回退段,而一個回退段可存放一個或多個事務的回退數據。

 

三、區(extent)

  區是磁盤空間分配的最小單位;

  一、磁盤按區劃分,每次至少分配一個區;

  二、區存儲於段中,它由連續的數據塊組成。

 

四、塊(data block)、頁(page)

  數據塊是數據庫中最小的數據組織單位與管理單位,是數據文件磁盤存儲空間單位,也是數據庫I/O 的最小單位。

 

五、數據行的格式

行的幾個關注要素:

  一、變長列字節列表

    1>記錄了各個變長列的長度狀況,方便找到變長邊界;

    2>按照列順序逆序放置

  二、null列表

    1>記錄null的列的標誌信息,由於null的列在行記錄裏不記錄列值,方便找的時候知道哪列是空的

    2>空列不佔空間,可變長+null位,定位後面的列數據

  三、行頭標誌

  四、列數據:實際咱們存放的數據

  五、刪除標記(deleted_flag):刪除時對該行進行標記「deleted」,待purge

    對於未提交事務的刪除,其餘能夠繼續select,由於沒有真正的刪除,也就不用勞煩undo了。

  六、xid(6字節)、rollpointer(7字節)

    若是沒有定義主鍵的話,每行還會增長個rowid列(6字節),做爲隱藏主鍵;

 

6、行列接

  一、varchar能夠很長,varchar(20):能夠存放20個字符

    gbk:一個字符佔2個字節,所以實際上佔用40個字節

    utf8:一個字符大約佔3個字節,所以實際上佔用60個字節

  二、blob列,主要用來存放圖片、文件

建議:

  一、對於大列,單獨獨立出去,採用垂直拆分表的方式來實現

  二、不要出現一個表中存在多列、長列的狀況,不然表的性能會很低下

相關文章
相關標籤/搜索