啦啦啦资源视频在线观看_强互换娇妻爽文100系列_好深太大了疼快点拔出去_不卡精品国产_亚洲人成在线

好運物流網-全國領先的物流網   好運物流網-登錄  好運物流網-免費注冊 進入我的后臺 首頁 | 發布信息 | 服務項目 | 物流百科
物流查詢|物流公司|中國物流信息網-好運物流網
 
你正在查看的信息:資訊首頁->資訊頻道->IT編程技術->正文

mysql一張表最多可以創建多少字段,單表最大列數限制

更新時間:2022/4/23 13:59    出處:互聯網
已經瀏覽
3633
● MySQL Server最多只允許4096個字段

● InnoDB 最多只能有1000個字段

● 字段長度加起來如果超過65535,MySQL server層就會拒絕創建表

● 字段長度加起來(根據溢出頁指針來計算字段長度,大于40的,溢出,只算40個字節)如果超過8126,InnoDB拒絕創建表

  其實MySQL在計算字段長度的時候并不是按照字段的全部長度來記的。列字段小于40個字節的都會按實際字節計算,如果大于20 * 2=40 字節就只會按40字節。

創建一個300個字段長度類型為varchar(30)的表,在創建時不會創建成功。因為varchar(30)沒有超過20*2,那么總長度就是300*30=9000 > 8126就會創建失敗。

創建一個150個字段長度類型為varchar(100)的表可以創建成功。因為varchar(100) 大于了20*2那么就只會按40計算 總長度就是150*20*2=6000 < 8126 就會創建成功。

varchar(40) uft8 理論上能建立203列(8126/40) 但是實際上只建立了 196列

● 表結構中根據Innodb的ROW_FORMAT的存儲格式確定行內保留的字節數(20 VS 768),最終確定一行數據是否小于8126,如果大于8126,報錯。

MySQL官方手冊就可以查詢到, 對于一行記錄最大的限制是65535字節。為什么是65535?規定一行數據里面字段長度定義有64k;

有了65535的限制以后還有一個8126的限制是為什么呢?

MySQL是分兩層的,
MySQL Server層 + 存儲引擎層。

第2個問題其實是MySQL除了在Server層做了一次限制還會在Innodb存儲引擎層在做一次限制。

innodb為了保證B+TREE是一個平衡樹結構,強制要求一條記錄的大小不能超過一個頁大小的一半。這也就是我們上面看到的第二個錯誤。

下面是innodb B+樹的結構,我們可以想象一下二分查找時,一個頁的只有一條數據會是什么樣子?

每個頁只有一條數據的查找就變成了鏈表查找了。這樣就沒有二分查找的意義了。

而MySQL中默認的頁大小是16K,16K的一半是8196字節減去一些元數據信息就得出了8126這個數字。
還可以看看其他文章,謝謝您的閱讀。
網站申明:系本文編輯轉載,來源于網絡,目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責,所有權歸屬原作者。如內容、圖片有任何版權問題,請聯系我們刪除
上一篇:MySQL的單表容量有多少?可以最多存放多少行?一張表存儲有沒有上限? 下一篇:mysql增加字段時報錯:Row size too large,mysql的行、字段長度的限制
更多相關的物流文章
IT編程技術  互聯網  2023-10-07  瀏覽:7515次
IT編程技術  互聯網  2022-11-24  瀏覽:10641次
IT編程技術  互聯網  2022-11-17  瀏覽:11217次
IT編程技術  互聯網  2022-11-17  瀏覽:10667次
IT編程技術  互聯網  2022-11-14  瀏覽:10583次
IT編程技術  互聯網  2022-11-06  瀏覽:10952次
IT編程技術  互聯網  2022-11-05  瀏覽:10433次
IT編程技術  互聯網  2022-11-05  瀏覽:10154次
IT編程技術  互聯網  2022-10-28  瀏覽:11805次
正在被瀏覽的文章
【IT編程技術】熱點文章
“掃一掃”微信公眾號
好運物流網公眾號二維碼
關于好運物流網 - 聯系好運網 - 物流公司查詢 - 物流知道 - 幫助中心 - 網站地圖
溫馨提示:防范支招 安全警示:貨運合作要有安全意識,需當面核實對方真實身份,要簽訂合同/協議、提供身份證等(防范支招)
免責聲明:本站只起到物流信息平臺作用,內容的準確性以及物流過程中出現的任何風險均由發布者負責,與平臺無關。
好運物流網(haoyun56.com)  備案號:浙ICP備10210792號-4

浙公網安備 33080202000006號