我有一個要求將用戶上傳的文件存儲到數據庫(文件系統不是一個選項)。Blob和存儲要求
上傳的文件是不同的類型(例如PDF,EXCEL等)。
我在決定是否使用MEDIUMBLOB
作爲類型來將這些文件存儲爲二進制數據時遇到問題。
由於這些文件的大小隨着巨大差異的變化而出現混淆。就像其中一些文件有幾百千字節(例如114 KB),但其他一些則高達1.5兆字節。
所以我真的需要使用MEDIUMBLOB
作爲列類型。但是我沒什麼困惑,因爲實際佔用的內存取決於上傳文件本身的大小或文件大小本身被忽略,內存只是基於數據類型分配。這非常重要,因爲大部分每天上傳的文件(其中很多文件)的大小非常小,磁盤中的可用內存(空間)有限。
正如我讀MySQL的文檔的以下部分:
10.5. Data Type Storage Requirements
L表示在給定的字符串值的字節實際長度。
Data type Storage Required
========================================================
TINYBLOB, TINYTEXT L + 1 bytes, where L < 2^8
BLOB, TEXT L + 2 bytes, where L < 2^16
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 2^24
LONGBLOB, LONGTEXT L + 4 bytes, where L < 2^32
我想使用的內存取決於影片上傳的實際文件的大小。即如果我的列類型爲MEDIUMBLOB
,並且如果我上傳大小爲114 KB的文件,則將使用唯一的114 KBytes + 3 Bytes
磁盤存儲器,而不是(2^24) Bytes + 3 Bytes
。
我想對嗎?或者我會通過在MEDIUMBLOB
字段中存儲大量文件(大小爲100到300 KB)來浪費大量的磁盤內存。
我用這個命令做了一些測試,看起來像我的假設是正確的。謝謝。 – jombie