postgresql tcp数据压缩

sea*_*est 13 compression postgresql

postgresql中是否有任何内部方法可以通过tcp套接字启用psql连接上的数据压缩.

我还可以使用其他一些不在postgresql内部的方法,比如ssh压缩或任何其他vpn压缩.但是,这可能会增加复杂性.

问候,

Eel*_*lke 5

从postgresql 9.2开始,似乎有一个sslcompression选项,默认为true。但是,它要求使用zlib支持才能构建使用过的openssl库。例如,Windows企业数据库安装程序中的openssl二进制文件不具有此支持。双方当然也都支持它!

  • 由于犯罪,这变得越来越困难。您不仅必须在连接字符串中设置 sslcompression=1 (或使用环境变量 PGSSLCOMPRESSION=1),还要使用 zlib-dynamic 或 zlib 选项(不是 no-zlib)编译 OpenSSL 并(对于 OpenSSL 1.1.1)设置 Compression /etc/ssl/openssl.cnf 中的 =On 和 MaxProtocol=TLSv1.2 (无论如何,对于 Debian)。这是因为 TLS 1.3 取消了 zlib 压缩,并要求客户端发送不带压缩方法的 TLS 1.3 ClientHello - 如果服务器降级到 TLS 1.2,则不会进行压缩,只有在客户端发送 TLS 1.2 ClientHello 时才会进行压缩。 (2认同)

Szy*_*ski 3

大约两个月前,当我问同样的问题时,唯一的答案是:使用 SSH。不过我还没有检查过,因为我们设法将列分成两部分,每个查询下载大约 200kB 而不是 20MB,这已经足够了。

我们的表中有大行(里面有 JSON)。您的问题可能略有不同。也许您得到了不需要的行?我已经见过太多次了:从表中获取所有行,在应用程序中排序,然后获取前 10 行...当使用 order by 和 limit 就足够了。

  • ssh 不方便用于此目的。为了实现 ssh 压缩,我们必须将 ssh 隧道固定到 localhost:someport,并且必须向软件显示此虚拟端口作为 postgresql 端口。你能建议其他方法吗?如果协议是基于 TCP 并处理大量数据,则很难理解为什么不开发这种压缩。 (2认同)