欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

mysql的varchar與text對(duì)比

varchar和text是MySQL字符存儲(chǔ)爭(zhēng)議比較多的領(lǐng)域,究竟大字段用那個(gè)比較好,我們來對(duì)比一下,然后自行選擇.

創(chuàng)新互聯(lián)公司主營(yíng)濟(jì)水街道網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,濟(jì)水街道h5微信平臺(tái)小程序開發(fā)搭建,濟(jì)水街道網(wǎng)站營(yíng)銷推廣歡迎濟(jì)水街道等地區(qū)企業(yè)咨詢

大小對(duì)比
VARCHAR:varchar在mysql中必須滿足最大行寬度限制,也就是 65535(64k)字節(jié),而varchar本身是按字符串個(gè)數(shù)來定義的,在mysql中使用uft-8字符集一個(gè)字符占用三個(gè)字節(jié),所以單表varchar實(shí)際占用最大長(zhǎng)度如下.
?? ?1.使用utf-8字符編碼集varchar最大長(zhǎng)度是(65535-2)/3=21844個(gè)字符(超過255個(gè)字節(jié)會(huì)有2字節(jié)的額外占用空間開銷,所以減2,如果是255以下,則減1)。
?? ?2.使用utf-8mb4字符集,mysql中使用 utf-8mb4 字符集一個(gè)字符占用4個(gè)字節(jié),所以 varchar 最大長(zhǎng)度是(65535-2)/4=16383 個(gè)字符(超過255個(gè)字節(jié)會(huì)有2字節(jié)的額外占用空間開銷,所以減2,如果是255以下,則減1)。

注意:如果使用utf-8mb4字符集時(shí),有些需要存儲(chǔ)utf-8字符的時(shí)候,還是會(huì)只占3字節(jié),所以有時(shí)會(huì)比這個(gè)計(jì)算值能存更多個(gè)字符,因?yàn)閡tf-8mb4是utf-8的超集.

TEXT:最大限制也是64k個(gè)字節(jié),但是本質(zhì)是溢出存儲(chǔ),innodb默認(rèn)只會(huì)存放前768字節(jié)在數(shù)據(jù)頁中,而剩余的數(shù)據(jù)則會(huì)存儲(chǔ)在溢出段中,雖然也受單表65535最大行寬度限制,但mysql表中每個(gè)BLOB和TEXT列實(shí)際只占其中的5至9個(gè)字節(jié),其他部分將進(jìn)行溢出存儲(chǔ).所以實(shí)際占用表最大行寬度為9+2字節(jié),外加的是額外開銷,跟表的實(shí)際寬度沒有關(guān)系.
?? ?1.如果使用utf-8字符集,那么單字段占用最大長(zhǎng)度也是21844個(gè)字符.
?? ?2.不過單表可以設(shè)置多個(gè)text字段,這就突破了單表最大行寬度65535的限制

注意:如果采用了新的行格式類型Barracuda (梭子魚),該文件格式擁有新的兩種行格式:compressed和dynamic,兩種格式對(duì)blob/text字段采用完全溢出的方式,數(shù)據(jù)頁中只存放20字節(jié),其余的都存放在溢出段中.

其他text:

text字段是分長(zhǎng)中短類型,不像varchar只有一種,除了上面的text,還有下面三個(gè).

TinyText:最大長(zhǎng)度255個(gè)字節(jié),實(shí)際上是個(gè)沒什么意義的類型了.

MEDIUMTEXT:最大長(zhǎng)度限制16M個(gè)字節(jié)。和普通text一樣也支持溢出存儲(chǔ),所以實(shí)際占用表最大行寬度為9+3字節(jié),外加的是額外開銷
LONGTEXT:最大長(zhǎng)度限制4G個(gè)字節(jié)。和普通text一樣也支持溢出存儲(chǔ),所以實(shí)際占用表最大行寬度為9+4字節(jié),外加的是額外開銷

----------------------------------------

示例:

#VARCHAR單表單字段最長(zhǎng)不能超過21844
CREATE?TABLE?test(
????va?VARCHAR(21845)
)DEFAULT?CHARSET=utf8;
[Err]?1118?-?Row?size?too?large.?The?maximum?row?size?for?the?used?table?type,?not?counting?BLOBs,?is?65535.?This?includes?storage?overhead,?check?the?manual.?You?have?to?change?some?columns?to?TEXT?or?BLOBs
#這樣就可以了
CREATE?TABLE?test(
????va?VARCHAR(21844)
)DEFAULT?CHARSET=utf8;
受影響的行:?0
時(shí)間:?0.155s
#雖然每個(gè)BLOB和TEXT列?賬戶只占其中的5至9個(gè)字節(jié)。但是還不夠
CREATE?TABLE?test(
????va?VARCHAR(21841),
????tx?text
)DEFAULT?CHARSET=utf8;
[Err]?1118?-?Row?size?too?large.?The?maximum?row?size?for?the?used?table?type,?not?counting?BLOBs,?is?65535.?This?includes?storage?overhead,?check?the?manual.?You?have?to?change?some?columns?to?TEXT?or?BLOBs
#然后9+2就可以了
CREATE?TABLE?test(
????va?VARCHAR(21840),
????tx?text
)DEFAULT?CHARSET=utf8;
受影響的行:?0
時(shí)間:?0.170s

--------------------------------------------------------

額外占用空間開銷說明:
varchar 小于255byte? 1byte overhead
varchar 大于255byte? 2byte overhead
tinytext 0-255 1 byte overhead
text 0-65535 byte 2 byte overhead
mediumtext 0-16M? 3 byte overhead
longtext 0-4Gb 4byte overhead

注意:

雖然text字段會(huì)把超過768字節(jié)的大部分?jǐn)?shù)據(jù)溢出存放到硬盤其他空間,看上去是會(huì)更加增加磁盤壓力.但從處理形態(tài)上來講varchar大于768字節(jié)后,實(shí)質(zhì)上存儲(chǔ)和text差別不是太大了.因?yàn)槌L(zhǎng)的varchar也是會(huì)用到溢出存儲(chǔ),讀取該行也是要去讀硬盤然后加載到內(nèi)存,基本認(rèn)為是一樣的。

另外從8000byte這個(gè)點(diǎn)說明一下,mysql的innodb data page默認(rèn)一個(gè)數(shù)據(jù)頁是16K,要存兩行數(shù)據(jù),所以對(duì)于varcahr, text如果一行數(shù)據(jù)不超過8000byte ,overflow不會(huì)存到別的page中。
----------------------------------------

差異點(diǎn):
text字段,MySQL不允許有默認(rèn)值。建立索引必須給出前綴索引長(zhǎng)度.
varchar允許有默認(rèn)值,對(duì)索引長(zhǎng)度沒限制,

注意:

InnoDB引擎單一字段索引的默認(rèn)長(zhǎng)度最大為767字節(jié),myisam為1000字節(jié).例如字符編碼是utf8,那么varchar的索引最大長(zhǎng)度是256個(gè)字符.超出限制會(huì)導(dǎo)致索引創(chuàng)建不成功,轉(zhuǎn)而需要?jiǎng)?chuàng)建前綴索引.設(shè)置innodb_large_prefix=1可以增大限制,允許索引使用動(dòng)態(tài)壓縮,但是表的row_format必須是compressed或者dynamic.可以使索引列長(zhǎng)度大于767bytes,但是總長(zhǎng)度不能大于3072 bytes.
----------------------------------------

總結(jié)
  根據(jù)存儲(chǔ)的實(shí)現(xiàn):可以考慮用varchar替代text,因?yàn)関archar存儲(chǔ)更彈性,存儲(chǔ)數(shù)據(jù)少的話性能更高
  如果需要非空的默認(rèn)值,就必須使用varchar
  如果存儲(chǔ)的數(shù)據(jù)大于64K,就必須使用到mediumtext , longtext,因?yàn)関archar已經(jīng)存不下了
  如果varchar(255+)之后,和text在存儲(chǔ)機(jī)制是一樣的,性能也相差無幾
  需要特別注意varchar(255)不只是255byte ,實(shí)質(zhì)上有可能占用的更多。

感謝吳炳錫老師指導(dǎo)

參考文章地址:http://wubx.net/varchar-vs-text/

https://blog.csdn.net/free_ant/article/details/52936756

https://blog.csdn.net/q3dxdx/article/details/51014357

本文題目:mysql的varchar與text對(duì)比
URL網(wǎng)址:http://aaarwkj.com/article4/gghoie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)外貿(mào)建站、、手機(jī)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
日日做日夜夜操天天搞| 免费成人激情在线电影| 久久国产三级久久久久久| 欧美亚洲另类麻豆综合在线| 中文字幕日日夜夜av| 亚洲综合色一区二区三区四区 | 日本熟女视频免费观看| 香蕉久草官网视频观看| 亚洲精品成人久久国产| 日韩在线视频精品一区| 国产精品九九久久精品女同| 亚洲国产日韩中文字幕| 国产一级三级视频在线| 一级片一区二区中文字幕| 激情久久五月激情婷婷| 国产伦理自拍视频在线观看| 国产特级黄色片免费看| 亚洲综合另类小说专区| 天天操天天射夜夜撸| 日本经典三级视频在线观看 | 99热这里只有精品56| 国产精品xxxx国产精品| 全部网站免费在线观看等| av中文字幕国产精品| av 一区二区三区av| 欧美日韩亚洲一区在线| 国产欧美一区二区三区高清| 91九色国产老熟女乱子| 国产精品美女露脸av毛片| 亚洲va久久久噜噜噜久久狠| 亚洲欧美精品综合久久99| 午夜免费视频观看在线| 日本不卡一区二区在线视频| 久久久人妻精品一区二区三区四区| 国产性做爰片免费网站| 性欧美一区二区三区| av资源中文字幕在线天堂| 国产男女视频免费观看| 色婷婷区二区三区四区| 久久香蕉精品国产亚洲av| 清纯唯美亚洲自拍第一页|