我们正在将加密的文件内容存储在PostgresSQL数据库中。我们存储了很多。目前,我们无法在其他任何地方(例如FTP或内部存储设备)写入此内容。仍然我们的数据库变得越来越快。
我已经知道PostgreSQL默认是压缩字符串数据,所以我的问题是:在将数据插入数据库之前是否值得在应用程序端进行字符串压缩。这样会节省空间吗?
也许您知道在将文件存储在PostgreSQL表中时如何调整PostgreSQL或任何其他方法来节省空间。
我的扩展答案
我想了解更多,所以我做了几次实验。
gzdeflate
从源文件压缩的行结果如下:
text
STORAGE EXTENDED
-表格大小 13MB text
STORAGE EXTERNAL
-表格大小 1MB +吐司 1027MB bytea
带有预gzdefdefed数据-表大小 5.2MB 我想指出,可以使用STORAGE EXTENDED
预先压缩和存储数据为文本,结果是 700kb 表大小 BUT 预先压缩的数据包含字符超出大多数字符集调色板。检索这些数据将是不可能的。
结论:
text
,则每〜1GB内容大约有13MB的存储空间。>2kb
。如果您的字符串少于2000个字符,则必须自行更改此设置或压缩数据。答案 0 :(得分:3)
有关详细信息,请参见the documentation。
PostgreSQL的压缩算法很快,但是效果不是很好,因此可以在保存数据之前先压缩数据来节省空间。
但是随后您应该更改表以对列使用EXTERNAL
存储策略。否则,PostgreSQL将通过压缩已压缩的值来不必要地浪费CPU周期,只是意识到它们不会变小并以原始方式存储它们。