日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql varchar java_关于MySQL varchar类型最大值,原来一直都理解错了

發(fā)布時間:2023/12/10 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql varchar java_关于MySQL varchar类型最大值,原来一直都理解错了 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

寫在前面

關于MySQL varchar字段類型的最大值計算,也許我們一直都理解錯誤了,本文從問題出發(fā),經(jīng)實踐驗證得出一些實用經(jīng)驗,希望對大家的開發(fā)工作有些幫助~

背景描述

最近同事在做技術方案設計時候,考慮到一個表設計時希望利用varchar類型進行存儲,而不是采用text,那就需要確定下varchar允許的最大長度是多少,用來評估下后期是否會遇到存儲長度瓶頸。

那問題來了:MySQL 數(shù)據(jù)庫的varchar字段類型最大存儲長度到底是多少?

問題分析

一切以官方文檔為準,翻了下官方描述如下:

In MySQL 4.1 the length is always 1 byte. In MySQL 5.0 the length may be either 1 byte (for up to 255) or 2 bytes (for 256 to 65535).

大概意思就是說:

在MySQL 4.1以前,長度總是1個字節(jié)(varchar(20),指的是20字節(jié))

在MySQL 5.0以后,長度可以是1字節(jié)(最多255個字節(jié))或2個字節(jié)(256到65535)

按照官網(wǎng)說法最大值是65535bytes,utf8mb4編碼情況下每個字符占4個bytes,最大值應該為16383.75

65535/4=16383.75

實踐驗證

到此貌似已經(jīng)有了結論了,但實際情況真的是這樣的么?

我們來實驗下試試看?

mysql 版本:select version(); // 5.7

1、若一個表只有一個varchar類型

定義如下:

CREATETABLE`t1`?(`c`varchar(N)?DEFAULTNULL)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8mb4;

那表 t1 的`c`字段的最大長度N為多少呢?

(65535?1?2)/4=16383

備注:

· 減1的原因是實際行存儲從第二個字節(jié)開始;

· 減2的原因是varchar頭部的2個字節(jié)表示長度;

· 除4的原因是字符編碼是utf8mb4。

2)若表中包含其他多種類型的情況呢

定義如下:

CREATETABLE`t2` (`c1`int(10) DEFAULTNULL,`c2`char(32) DEFAULTNULL,`c3`varchar(N) DEFAULTNULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

那表 t2 的`c`字段的最大長度N為多少呢?

(65535?1?2?4?32*4)/4=16350

備注:

· 減1、減2的原因同上;

· 減4的原因是int類型占用4個字節(jié);

· 減32*4的原因是utf8mb4編碼的char類型占用4個字節(jié)(長度32)

我們來驗證一下是否如上述推斷計算所述:

1)修改t2表c3字段長度為16350

alter?table?`t2`?modify?column?`c3`?varchar(16350)

執(zhí)行成功。

2)修改t2表c3字段長度為16351

alter?table?`t2`?modify?column?`c3`?varchar(16351);

執(zhí)行失敗,報錯信息如下:

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.

總結一下

Q:varchar到底能存多少個字符?

A:這與表使用的字符集相關,latin1、gbk、utf8、utf8mb4編碼存放一個字符分別需要占1、2、3、4個字節(jié),同時還要考慮到去除其他字段的占用影響。

實踐出真知,可以簡單試一下之后再下結論。

往期熱文推薦:

「技術架構精進」專注架構研究,技術分享

Thanks for reading!

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的mysql varchar java_关于MySQL varchar类型最大值,原来一直都理解错了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久免费视频3 | 久久性色| 日韩影院在线 | 国产精品资源在线观看 | 欧美xxxx18 | 成人做爰66片免费看网站 | 欧美又粗又大aaa片 老熟妇仑乱视频一区二区 亚洲妇女体内精汇编 | eeuss国产一区二区三区黑人 | 日本精品一二三 | 国产毛片久久久久久 | www免费黄色| 精品成人18 | 国产特级aaaaaa大片 | 精品三级电影 | 国产女主播在线 | 久色视频 | 午夜一二三区 | 朝鲜黄色片 | 麻豆精品 | 蜜臀在线观看 | 久久高清无码视频 | 欧美国产日韩一区二区三区 | 污污网站在线看 | 九九影院最新理论片 | 亚洲v在线观看 | 久久99精品国产麻豆婷婷 | 亚洲专区在线 | 中文字幕在线三区 | 一级小毛片 | 五月天婷婷导航 | 51调教丨国产调教视频 | 精品人妻人人做人人爽 | 色婷婷免费视频 | 污污视频免费观看 | 婷婷射丁香 | 69精品在线观看 | 午夜精品av | 久久久久久久 | 99热这里只有精品3 成年人黄色网址 | 青青青草视频在线观看 | 成人网视频 | 女生鸡鸡软件 | 国产精品久久久久影院老司 | 一二三区免费视频 | 国产精品久久国产精品 | 山村淫强伦寡妇 | 免费特级毛片 | 精品一区二区久久久久蜜桃 | 成人av影视在线观看 | 性高潮久久久久久久 | 97人人澡| 成人免费观看av | 玉女心经 在线 | xx在线视频| www.在线播放 | 爽爽影院在线免费观看 | 午夜激情视频网 | 亚洲av无码潮喷在线观看 | 69精品无码成人久久久久久 | 欧美激情校园春色 | 亚洲精品888 | 色多多视频在线 | 九九热视频精品在线观看 | 欧美一级特黄视频 | 朝桐光av在线一区二区三区 | 紧身裙女教师三上悠亚红杏 | 黄色成人在线免费观看 | 中文在线最新版天堂8 | 黄色污污视频 | 成人精品网| 午夜影院男女 | 亚洲色图欧洲色图 | 神马国产 | 综合色小说 | 91麻豆国产福利精品 | 2025国产精品视频 | 青草伊人久久 | 成人免费黄色网 | 97超碰人 | 国产动漫av | 国产三级自拍 | www.午夜av| 热99 | 日本一本在线视频 | 毛片毛片毛片毛片毛片毛片毛片 | 免费美女av | 国产青青草在线 | 黄色网页免费 | 日本中文在线播放 | 丝袜脚交国产在线观看 | 精品人妻久久久久一区二区三区 | 国产免费一区二区三区 | 欧美精品xx| 男人插女人的网站 | 亚洲成人福利在线 | 人妻少妇精品久久 | 亚洲精品偷拍视频 | 涩涩av| 欧美黑人精品 |