小編給大家分享一下MySQL中blob是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在石拐等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),成都全網(wǎng)營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),石拐網(wǎng)站建設(shè)費(fèi)用合理。
BLOB (binary large object),二進(jìn)制大對(duì)象,是一個(gè)可以存儲(chǔ)二進(jìn)制文件的容器。在計(jì)算機(jī)中,BLOB常常是數(shù)據(jù)庫中用來存儲(chǔ)二進(jìn)制文件的字段類型。BLOB是一
個(gè)大文件,典型的BLOB是一張圖片或一個(gè)聲音文件,由于它們的尺寸,必須使用特殊的方式來處理(例如:上傳、下載或者存放到一個(gè)數(shù)據(jù)庫)。根據(jù)Eric Raymond的
說法,處理BLOB的主要思想就是讓文件處理器(如數(shù)據(jù)庫管理器)不去理會(huì)文件是什么,而是關(guān)心如何去處理它。但也有專家強(qiáng)調(diào),這種處理大數(shù)據(jù)對(duì)象的方法是把雙
刃劍,它有可能引發(fā)一些問題,如存儲(chǔ)的二進(jìn)制文件過大,會(huì)使數(shù)據(jù)庫的性能下降。在數(shù)據(jù)庫中存放體積較大的多媒體對(duì)象就是應(yīng)用程序處理BLOB的典型例子。
mysql BLOB類型
MySQL中,BLOB是個(gè)類型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,這幾個(gè)類型之間的唯一區(qū)別是在存儲(chǔ)文件的最大大小上不同。
MySQL的四種BLOB類型
類型 大小(單位:字節(jié))
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
linux修改etc/my.cnf
[mysqld]
max_allowed_packet = 16M //不同于[mysqldump]下的max_allowed_packet
BLOB是一個(gè)二進(jìn)制大對(duì)象,可以容納可變數(shù)量的數(shù)據(jù)。有4種BLOB類型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它們只是可容納值的最大長度不同。
有4種TEXT類型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。這些對(duì)應(yīng)4種BLOB類型,有相同的最大長度和存儲(chǔ)需求。
BLOB 列被視為二進(jìn)制字符串(字節(jié)字符串)。TEXT列被視為非二進(jìn)制字符串(字符字符串)。BLOB列沒有字符集,并且排序和比較基于列值字節(jié)的數(shù)值值。TEXT列有一個(gè)字符集,并且根據(jù)字符集的 校對(duì)規(guī)則對(duì)值進(jìn)行排序和比較。
在TEXT或BLOB列的存儲(chǔ)或檢索過程中,不存在大小寫轉(zhuǎn)換。
當(dāng)未運(yùn)行在嚴(yán)格模式時(shí),如果你為BLOB或TEXT列分配一個(gè)超過該列類型的最大長度的值值,值被截取以保證適合。如果截掉的字符不是空格,將會(huì)產(chǎn)生一條警告。使用嚴(yán)格SQL模式,會(huì)產(chǎn)生錯(cuò)誤,并且值將被拒絕而不是截取并給出警告。
在大多數(shù)方面,可以將BLOB列視為能夠足夠大的VARBINARY列。同樣,可以將TEXT列視為VARCHAR列。BLOB和TEXT在以下幾個(gè)方面不同于VARBINARY和VARCHAR:
· 當(dāng)保存或檢索BLOB和TEXT列的值時(shí)不刪除尾部空格。(這與VARBINARY和VARCHAR列相同)。
請(qǐng)注意比較時(shí)將用空格對(duì)TEXT進(jìn)行擴(kuò)充以適合比較的對(duì)象,正如CHAR和VARCHAR。
· 對(duì)于BLOB和TEXT列的索引,必須指定索引前綴的長度。對(duì)于CHAR和VARCHAR,前綴長度是可選的。
· BLOB和TEXT列不能有 默認(rèn)值。
LONG和LONG VARCHAR對(duì)應(yīng)MEDIUMTEXT數(shù)據(jù)類型。這是為了保證兼容性。如果TEXT列類型使用BINARY屬性,將為列分配列字符集的二元 校對(duì)規(guī)則。
MySQL連接程序/ODBC將BLOB值定義為LONGVARBINARY,將TEXT值定義為LONGVARCHAR。
由于BLOB和TEXT值可能會(huì)非常長,使用它們時(shí)可能遇到一些約束:
· 當(dāng)排序時(shí)只使用該列的前max_sort_length個(gè)字節(jié)。max_sort_length的 默認(rèn)值是1024;該值可以在啟動(dòng)mysqld服務(wù)器時(shí)使用--max_sort_length選項(xiàng)進(jìn)行更改。
運(yùn)行時(shí)增加max_sort_length的值可以在排序或組合時(shí)使更多的字節(jié)有意義。任何客戶端可以更改其會(huì)話max_sort_length變量的值:
mysql> SET max_sort_length = 2000;
mysql> SELECT id, comment FROM tbl_name
-> ORDER BY comment;
當(dāng)你想要使超過max_sort_length的字節(jié)有意義,對(duì)含長值的BLOB或TEXT列使用GROUP BY或ORDER BY的另一種方式是將列值轉(zhuǎn)換為固定長度的對(duì)象。標(biāo)準(zhǔn)方法是使用SUBSTRING函數(shù)。例如,下面的語句對(duì)comment列的2000個(gè)字節(jié)進(jìn)行排序:
mysql> SELECT id, SUBSTRING(comment,1,2000) FROM tbl_name
-> ORDER BY SUBSTRING(comment,1,2000);
· BLOB或TEXT對(duì)象的最大大小由其類型確定,但在客戶端和服務(wù)器之間實(shí)際可以傳遞的最大值由可用內(nèi)存數(shù)量和通信緩存區(qū)大小確定。你可以通過更改max_allowed_packet變量的值更改消息緩存區(qū)的大小,但必須同時(shí)修改服務(wù)器和客戶端程序。例如,可以使用 mysql和mysqldump來更改客戶端的max_allowed_packet值。
每個(gè)BLOB或TEXT值分別由內(nèi)部分配的對(duì)象表示。這與其它列類型形成對(duì)比,后者是當(dāng)打開表時(shí)為每1列分配存儲(chǔ)引擎。
以上是“mysql中blob是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!