ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

在保存在PostgresSQL上之前压缩字符串是否有价值?

2019-11-08 07:29:07  阅读:243  来源: 互联网

标签:postgresql compression php


我们将加密的文件内容存储在PostgresSQL数据库中.我们存储了很多.目前,我们无法在其他任何地方(例如FTP或内部存储设备)写入此内容.仍然我们的数据库变得越来越快.

我已经知道PostgreSQL默认是压缩字符串数据,所以我的问题是:在将数据插入数据库之前是否值得在应用程序端进行字符串压缩.这会节省空间吗?

也许您知道在PostgreSQL表中存储文件时如何调整PostgreSQL或任何其他方法来节省一些空间.

我的延伸答案

我想了解更多,所以我做了很少的实验.

>我用20000行创建了源文件,其中1行= 50000个随机字符.
>使用gzdeflate创建的文件,其中1行是来自源文件的压缩行
>我创建了具有一列的表格,并将每一行插入为1行.
>比较大小

结果如下:

>源文件-约1GB
>每行压缩的文件-4.45MB
>列文字存储扩展-表大小13MB
>栏文字STORAGE EXTERNAL-表格大小1MB吐司1027MB
>具有预gzdeflated数据的列bytea-表大小5.2MB

我想指出,可以使用STORAGE EXTENDED预先压缩和存储数据为文本,结果是700kb表大小,但是预先压缩的数据包含了大多数字符集调色板中的字符.检索这些数据将是不可能的.

结论:

>如果您希望将数据存储为文本,则每〜1GB内容约13MB是一个很好的比率.
>如果您需要更好的压缩,并且您不介意将数据存储为blob / bytea并创建其他脚本来管理插入/检索的数据…那么……考虑一下这几MB是否值得.
>还请记住:默认情况下,PostgreSQL压缩的字符串大于2kb.如果字符串少于2000个字符,则必须自己更改此设置或压缩数据.

解决方法:

有关详细信息,请参见the documentation.

PostgreSQL的压缩算法很快,但是效果不是很好,因此您可以在保存数据之前通过压缩数据来节省空间.

但是随后您应该更改表以对列使用EXTERNAL存储策略.否则,PostgreSQL将通过压缩已压缩的值来不必要地浪费CPU周期,只是意识到它们不会变小并以原始方式存储它们.

标签:postgresql,compression,php
来源: https://codeday.me/bug/20191108/2006622.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有