索引組織表
索引組織表:在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 新欄位名 字段...