本文目錄一覽:
什麼是blob,mysql blob大小配置介紹
是一種資料庫的數據類型,BLOB是按二進位來存儲的。
MySQL中,BLOB是個類型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,這幾個類型之間的唯一區別是在存儲文件的最大大小上不同。
TinyBlob 最大 255位元組
Blob 最大 65K
MediumBlob 中等16M
LongBlob 最大 4G
如何得到Mysql blob欄位的長度
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, 則支持。
什麼是blob,mysql blob大小配置介紹
BLOB是一個大文件,典型的BLOB是一張圖片或一個聲音文件,由於它們的尺寸,必須使用特殊的方式來處理(例如:上傳、下載或者存放到一個資料庫)。根據Eric Raymond的說法,處理BLOB的主要思想就是讓文件處理器(如資料庫管理器)不去理會文件是什麼,而是關心如何去處理它。但也有專家強調,這種處理大數據對象的方法是把雙刃劍,它有可能引發一些問題,如存儲的二進位文件過大,會使資料庫的性能下降。在資料庫中存放體積較大的多媒體對象就是應用程序處理BLOB的典型例子。mysql BLOB類型MySQL中,BLOB是個類型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,這幾個類型之間的唯一區別是在存儲文件的最大大小上不同。MySQL的四種BLOB類型類型 大小(單位:位元組)TinyBlob 最大 255Blob 最大 65KMediumBlob 最大 16Mlinux修改etc/my.cnf[mysqld]max_allowed_packet = 16M //不同於[mysqldump]下的max_allowed_packet
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246205.html