mysql的text/blob和行溢位
blob儲存二進位制,text儲存文字,前者可當做大個的varbinary,而後者可看成升級版的varchar(與long varchar等價);
兩者都有4種子型別:tiny,normal(預設),medium和long,區別就在可儲存的資料長度不一樣;
而int更是有5個子型別:tiny(1位元組),small(2位元組),medium(3位元組),normal(預設,4位元組),big(8位元組);
注:timestamp4位元組,datatime8位元組,date和time3位元組;enum佔用1-2個位元組(最大儲存65535個欄位);
限制
1 建立索引時必須指定字首;
2 不能指定default value;
3 使用臨時表時必須為磁碟表,memory引擎不支援這兩種欄位;
4 只有前max_sort_length(預設1024)位元組可參與排序;
行溢位
innodb採用B+樹結構,每個資料頁至少要儲存兩個記錄(否則變成了連結串列),如果不能滿足這個需求,則會出現行溢位,innodb只保留欄位前20位元組
(pre-plugin保留768位元組),剩餘資料分配新的資料頁uncompress blob page;
行溢位只與記錄長度有關係,即便行包含blob或text,若一個資料頁可儲存兩條記錄,也不會出現行溢位;
具體可參看《MySQL技術內幕-InnoDB儲存引擎的》的4.4章節 innodb行記錄格式;
對於pre-plugin,行溢位時保留每個欄位的前768位元組,如果保留的位元組總數仍然超出資料頁的一半大小,就會直接報錯1030- Got error 139 from storage engine。譬如一個表建立11個text或varachar(1000)欄位且行記錄長度>8k,則會產生行溢位,保留在原資料頁的記錄長度=11*768>8k,此時不能再繼續行溢位了,因此只能報錯。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-1426652/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL中TEXT與BLOB欄位型別的區別MySql型別
- varchar or blob:欄位型別的儲存和溢位條件型別
- MySQL和MSSQL下,text、ntext、image、blob的比較MySql
- mysql BLOB型別 TEXT型別MySql型別
- MySQL 中 blob 和 text 資料型別詳解MySql資料型別
- 【MYSQL】InnoDB行溢位資料說明MySql
- 瞭解 MySQL的資料行、行溢位機制嗎?MySql
- 記憶體溢位:native溢位 和 上層溢位記憶體溢位
- mysql的text欄位長度MySql
- Mysql BLOB、BLOB與TEXT區別及效能影響、將BLOB型別轉換成VARCHAR型別MySql型別
- CSS學習筆記:溢位文字省略(text-overflow)CSS筆記
- PHP 操作 mysql blob 資料型別的欄位PHPMySql資料型別
- 溢位OF和進位CF區別
- BLOB(二進位制大物件:text、ntext或image)型別資料的操作物件型別
- MySQL 數值型別溢位處理MySql型別
- 阿里大佬講解Java記憶體溢位示例(堆溢位、棧溢位)阿里Java記憶體溢位
- 請問mysql裡面的text欄位怎麼進行模糊查詢MySql
- 【MySQL經典案例分析】關於資料行溢位由淺至深的探討MySql
- JVM執行緒和記憶體溢位問題排查思路JVM執行緒記憶體溢位
- 簡單的記憶體“洩露”和“溢位”記憶體
- 64位Linux下的棧溢位Linux
- StackOverFlowError(棧溢位)Error
- 整數溢位
- Tomcat執行時報記憶體溢位Tomcat記憶體溢位
- 使用metasploit進行棧溢位攻擊-5
- CSS省略號text-overflow超出溢位顯示省略號(需要與overflow配合使用)CSS
- 記憶體和棧溢位問題定位記憶體
- 聊聊資料溢位的事
- 記憶體溢位的分析記憶體溢位
- Java棧溢位|記憶體洩漏|記憶體溢位Java記憶體溢位
- CSS控制LI行字元溢位用省略號代替CSS字元
- BLOB及CLOB欄位處理
- 記憶體溢位記憶體溢位
- 棧溢位基礎
- 集計時對於溢位的捕獲和處理
- 記憶體溢位和記憶體洩露記憶體溢位記憶體洩露
- 記憶體洩漏和記憶體溢位記憶體溢位
- BufferedImage記憶體洩漏和溢位問題記憶體