真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql-innodb行記錄格式

行記錄格式

為織金等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及織金網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、做網(wǎng)站、織金網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

可以通過show table status like 'table_name'命令查看當(dāng)前表使用的行格式(row_format字段)

row_format

redundant,最早的行格式

首部是字段長度偏移列表,按照列的順序逆序放置,其長度為(若列的長度小于255字節(jié),用1字節(jié)表示;若大于255個字節(jié),用2字節(jié)表示)

記錄頭信息:占用6字節(jié),含義如圖:

說明:n_fields值代表一行中列的數(shù)量,mysql一行中最多的列為1023;1byte_offs_flag:定義了偏移列表占用1字節(jié)還是2字節(jié)。

最后部分即為實際存儲的每個列的數(shù)據(jù)

注意:對于varchar類型的NULL值,不占用任何存儲空間,而char類型的NULL值需要占用空間


compact,5.0.3以后默認(rèn)行格式

說明:

首部是一個非NULL變長字段長度列表,且按照列的順序逆序放置,其長度為(若列的長度小于255字節(jié),用1字節(jié)表示;若大于255個字節(jié),用2字節(jié)表示)

NULL標(biāo)志位:該行數(shù)據(jù)是否有NULL值,有則用1表示,占用1個字節(jié)

記錄頭信息:固定占用5字節(jié),含義如圖:

說明:通過record_type分析可得,在innodb存儲引擎中頁內(nèi)部是通過一種鏈表的結(jié)構(gòu)來串連各個行記錄的。

最后的部分為實際存儲每個列的數(shù)據(jù)(注:1.不管是char類型還是varchar類型,NULL不占該部分任何空間,只占有NULL標(biāo)志位;2.固定長度char字段在未能完全占用其長度空間時,會用Ox20來進(jìn)行填充)

每行數(shù)據(jù)除了用戶定義的列外,還有兩個隱藏列(事務(wù)ID(DB_TRX_ID)6字節(jié),回滾指針列(DB_ROLL_PTR),7字節(jié)),若沒有定義主鍵,還會增加一個rowid(DB_ROW_ID)6字節(jié)

Antelope文件格式包括compact和Redundant行記錄格式

Barracuda文件格式包括dynamic和compressed行記錄格式

行溢出數(shù)據(jù)

compact和redundant存放BLOB的行溢出數(shù)據(jù)存儲格式如圖:

說明:如果可以在一個頁中至少存放兩行數(shù)據(jù),那么varchar類型的數(shù)據(jù)就不會存放到BLOB頁中;當(dāng)長度超過8098后,就會將溢出的數(shù)據(jù)存放在BLOB頁中。

varchar(N)中N指的是字符的長度,而文檔說明中varchar類型最大支持65535單位是字節(jié)且指的是所有varchar列的長度總和。


dynamic和compressed存放在BLOB中的數(shù)據(jù)采用的行溢出方式如圖:

說明:在數(shù)據(jù)頁中只存放20個字節(jié)的指針,實際的數(shù)據(jù)都存放在off page中

行溢出總結(jié):

    1.行記錄長度大約超過page一半時,依次將最長的列拆分發(fā)到多個page存儲,直到不再超過page的一半為止;

    2.溢出的列放在一個page中不夠的話,繼續(xù)放在新的page中

    3.compact格式下,溢出的列只存儲前768字節(jié)

    4.dynamic格式下,溢出的列只存儲前20字節(jié)(指針)

    5.select * 會同時讀取這些溢出的列,代價很高

    6.執(zhí)行計劃中出現(xiàn)filesort或temporary table時,一般都無法放在內(nèi)存中,需要變成disk tmp table,IO代價更高。

dynamic,將長字段完全off-page存儲

compressed(存儲的行數(shù)據(jù)會以zlib算法進(jìn)行壓縮)將data、index、pages進(jìn)行壓縮,但buffer pool中的pages則不壓縮

CHAR行結(jié)構(gòu)存儲

char(N)中N是指字符的長度,所以在不同的字符集下,char類型列內(nèi)部存儲的可能不是定長的數(shù)據(jù)。


標(biāo)題名稱:mysql-innodb行記錄格式
本文地址:http://weahome.cn/article/ghjhjs.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部