mysql 表 區 塊 頁 MySQL表

2021-10-17 23:38:14 字數 1896 閱讀 7538

索引組織表

索引組織表:在innodb儲存引擎中,表都是根據主鍵順序組織存放的,每個表都是有主鍵

_rowid可以顯示表的主鍵,只能夠檢視單個列為主鍵的情況,並且為非空唯一索引。

innodb邏輯儲存結構

表空間(tablespace)–>端(segment)—>區(extent)—>頁(page)—>塊(block)

表空間表空間是innodb儲存引擎邏輯結構的最高層,所有的資料都存放在表空間中。所有的資料都存放在這個表空間中。如果棄用了引數innodb_file_per_table,則每張表內的資料可以單獨存放在乙個表空間中。

表空間只存放資料、索引和插入緩衝bitmap頁,其他的資料(如回滾資訊,插入緩衝索引頁,系統事務資訊,二次寫緩衝)還是存放在原來的共享表空間中。

段常見的段有資料段、索引段、回滾段。資料段為b+樹的葉子節點,而索引段為b+樹的非索引節點

區由連續頁組成的空間,在任何情況下每個區的大小都是1mb,在預設情況下頁的大小為16kb,即乙個區中一共有64個連續的頁。

可以通過引數innodb_page_size來設定預設頁的大小

頁頁是innodb磁碟管理的最小單位,預設每個頁的大小為16kb。

行innodb儲存引擎是面向列的,資料都是按照行來進行存放的,最多允許存放16kb/2-200行的記錄,也就是7992行

innodb行記錄格式

使用show table status like 'table_name'來檢視當前表使用的行格式。

compact行記錄格式

mysql5.0引入的,其設計的目的是高效地儲存資料。

乙個頁中存放的行資料越多,其效能就越高。

在compact格式下,null值都不占用任何儲存空間,不管是char型別或者是varchar型別

redundant行記錄格式

mysql5.0之前的。

行溢位資料

blob可以不將資料放在溢位頁面中,而且即使是varchar列資料型別,依然有可能被存放為行溢位資料。通過實際測試,varchar的型別的最大長度為65532.varchar型別最大支援65535位元組。

mysql官方手冊中定義的65535長度是指所有的varchar列的長度總和,如果列的長度總和超過了這個長度,依然無法建立。

innodb儲存引擎的頁為16kb,也就是16384位元組,在一般情況下,innodb儲存引擎的資料都是存放在頁型別為b-tree node中。但是當發生行溢位時,資料存放在頁型別為uncompress blob頁中。

乙個頁存放資料,如果為兩條資料的話,那麼每條的最大的閾值為8098.

compressed和dynamic行記錄格式

innodb1.0.x引入新的檔案格式,compressed和dynamic

新的兩種記錄格式對於存放在blob中的資料採用完全的行溢位的方式。同時,儲存在其中的行資料會以zlib的演算法進行壓縮,

char的行結構儲存

對於多位元組字元編碼的char資料型別的儲存,innodb儲存引擎在內部將其視為變長字元型別,在變長長度列表中會記錄char資料型別的長度

char(2)儲存的是2個字元,不管是gbk,還是utf-8,還是latin,都是2個字元,而不是2個位元組。所以儲存的位元組是變化的。

innodb資料頁結構

包括7個部分:file header(檔案頭)

page header(頁頭)

infimum和supremum records

user records(使用者記錄,即行記錄)

free space(空閒空間)

page directory(頁目錄)

file trailer(檔案結尾資訊)

named file formats機制

mysql 表 區 塊 頁 mysql的伺服器構成

什麼是例項 這裡的例項不是類產生的例項物件,而是linux系統下的一種機制 1.mysql的後台程序 執行緒 預分配的記憶體結構。2.mysql在啟動的過程中會啟動後台守護程序,並生成工作執行緒,預分配記憶體結構供mysql處理資料使用。mysql三層構成 連線層1.提供鏈結協議 socket,tc...

Mysql 表空間和 資料頁空洞

一 表空間 1 表空間 innodb 引擎儲存的最高層 存放所有的資料 2 獨立表空間 mysql 版本5.6後預設開啟的單表單空間 1 innodb 預設儲存引擎頁的大小為 16k 預設表空間 大小為96k 2 獨立表空間 開啟方式 innodb file per table on 從mysql ...

mysql 修改表 MySQL修改表

mysql修改表 說明 1.建立錶能做的事,修改表幾乎都能做,不推薦使用。2.修改表修改表的結構 3,大體來說,可以對欄位進行新增,刪除,修改 可以對索引進行新增,刪除 4.表的選項,通常都是修改,即使不寫任何乙個 新增乙個表的字段 alter table 表名 add column 新欄位名 字段...