我有很多base64_encoded字符串,我保存在我的MySQL数据库中。但是,由于base64_encoded字符串大33%,我想知道如何优化我的数据库存储(现在我将我的字符串存储在LONGTEXT字段中,但是LONGBLOB或类似的东西呢?)。那么,我如何保存我的数据(现在是base64编码)更加优化,以便节省存储空间...(当选择值时,我仍然必须能够安全地再次对它进行编码)。
由于
答案 0 :(得分:0)
如果您有5.6.1或更高版本,则MySQL中可以使用FROM / TO_BASE64()。
Base64是简单的ascii文本。将base64存储在TEXT
中是没有问题的。因为(我认为)没有顽皮的角色所以不需要逃脱。但是存储FROM_BASE64的结果需要BLOB
(某种大小)。
因此...
INSERT INTO t (myblob) VALUES ( FROM_BASE64('UmljayBKYW1lcw==') );
SELECT TO_BASE64(myblob) FROM t;
FROM_BASE64
将重建原始(pre-base64)数据。
更好的是压缩:
INSERT INTO t (myblob) VALUES ( COMPRESS('UmljayBKYW1lcw==') );
SELECT UNCOMPRESS(myblob) FROM t;
这样,如果原始(pre-base64)数据是可压缩的,你将(可能)获得超过33%的数据。如果原始文件是.jpg
或其他一些已经压缩的数据,那么您也可以使用FROM_BASE64
代替COMPRESS
。