MYSQLBLOB欄位大小以及個數的限制測試

2021-07-11 14:50:08 字數 1346 閱讀 6367

測試結論

mysql版本 5.1

表型別: innodb, row_format=compact (這是預設的行格式)

插入超過10個blob, blob的資料量很小(<768位元組), 插入成功。

插入超過10個blob, blob的資料量很大(>768位元組), 插入失敗:報 got error 139 from storage engine。

注意,如果mysql伺服器版本是5.1, innodb_file_format選項不存在, 也就無從談起barracuda格式。 設定row_format=dynamic也是沒意義的。

mysql版本 5.5

表型別: innodb, row_format=compact (這是預設的行格式)

插入超過10個blob, blob的資料量很大(>768位元組), 插入失敗:報 row size too large (> 8126). changing some columns to text or blob or using row_format=dynamic or row_format=compressed may help. in current row format, blob prefix of 768 bytes is stored inline.

表型別: innodb, row_format=dynamic (這是innodb的新檔案儲存格式barracuda所支援的行格式)

插入超過10個blob, blob的資料量很大(>768位元組), 插入成功

備註:1) 實際測試測試我用的每個字段長度都是100k+

2) 對於mysql5.5, 雖然支援barracuda。但是預設使用的還是老的格式:antelope

除非在mysql的配置裡面my.cnf修改:

innodb_file_per_table = 1 

innodb_file_format = barracuda

或者set global 命令動態的修改:

set global innodb_file_format=barracuda;

set global innodb_file_per_table=1;

注意:1) 修改後的innodb_file_format格式, 只影響後續建立的表。 也就是後續建立的表,可以支援把row_format設為dynamic

2) set global 只是在mysql伺服器執行期間有效,重啟後innodb_file_format還原為原來的格式。

3) 判斷乙個表是否支援超過10個blob的字段的簡單辦法:

show table status like 't1' \g

檢視 row_format , 如果是compact, 必定不支援, 如果是dynamic, 則支援。

Mysql Blob型別大小 上傳檔案大小問題

tinyblob 僅255個字元 blob 最大限制到65k位元組 mediumblob 限制到16m位元組 longblob 可達4gb 在每個mysql的文件 從mysql4.0開始 的介紹中,乙個longblob列的最大允許長度依賴於在客戶 伺服器協議中可配置的最大包的大小和可用記憶體數。你可...

Mysql欄位大小寫

mysql在預設的情況下查詢是不區分大小寫的,例如 mysql create table t1 name varchar 10 query ok,0 rows affected 0.09 sec mysql insert into t1 values you you you query ok,3 r...

修改flexorm支援字段大小

在entityintrospector類的extractcolumn修改為 private function extractcolumn v object,entity entity,property string string entity.addfield new field return co...