Base64 MySQL存储空间优化

时间:2017-02-06 13:37:35

标签: mysql optimization base64 storage

我有很多base64_encoded字符串,我保存在我的MySQL数据库中。但是,由于base64_encoded字符串大33%,我想知道如何优化我的数据库存储(现在我将我的字符串存储在LONGTEXT字段中,但是LONGBLOB或类似的东西呢?)。那么,我如何保存我的数据(现在是base64编码)更加优化,以便节省存储空间...(当选择值时,我仍然必须能够安全地再次对它进行编码)。

由于

1 个答案:

答案 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