Oracle连接压缩?

joe*_*oev 9 java compression oracle jdbc

我有一个使用JDBC连接到Oracle 11g的应用程序.不幸的是,我的应用程序运行的机器和Oracle机器通过稍微低带宽的连接进行连接.我没有嗅到连接,但我很确定通过连接的数据流不会被压缩.对于我的应用程序,我更关心带宽而不是延迟.

有没有办法告诉JDBC驱动程序和Oracle压缩通过连接的数据?Google为数据文件压缩提出了很多答案,但我找不到任何有关网络协议压缩的信息.

我正在使用Oracle的瘦驱动程序,但如果只有OCI驱动程序支持,我可以切换到那个.谢谢你的任何建议!

Pab*_*ruz 10

我不知道有关Oracle的瘦和OCI驱动程序的细节.但您可以使用SSH隧道来实现压缩.

  1. 因此,在Oracle计算机中,您设置了一个SSH守护程序.如果您的Oracle服务器在RedHat Linux下运行,那么您就完成了
  2. 在客户端计算机(承载通过JDBC连接的应用程序的计算机上)上设置SSH连接,启用压缩隧道.您可以使用命令行SSH或Putty(如果您在Windows下)来执行此操作.

设置这样的连接:

$ ssh -L1521:localhost:1521 username@oracleserver_ip
Run Code Online (Sandbox Code Playgroud)

然后,在您的应用程序中,使用localhost:1521作为Oracle的地址.

  • 这不是VPN.这只是一条隧道.它**将**工作.如果您使用压缩隧道,并且您尝试传输的内容可​​以被压缩(如大量文本或XML),它将被压缩. (2认同)
  • SSH是一个加密隧道(http://en.wikipedia.org/wiki/Tunneling_protocol),使其成为一个事实上的VPN.也就是说,如果压缩比足以克服VPN /隧道开销,它就可以正常工作. (2认同)

Jos*_*non 5

根据我的经验,高延迟会损害使用Oracle JDBC驱动程序的性能,远远超过低带宽.(至少在我工作的应用程序中).您说您并不担心延迟,但是您能估计一下低带宽环境的延迟吗?

您发送的数据有多大?有BLOB列吗?是否涉及其他技术,如连接池或Hibernate?有很多潜在因素,而不仅仅是您的数据被压缩.

您是否已进行任何WAN仿真以尝试隔离最能降低性能的因素? WANem很容易设置.

我花了好几个星期才解决这个问题,而100-200ms的延迟对我们的伤害远远超过了1Mbit的带宽限制.希望你在一个不同的船 - 压缩一个更容易解决的问题.


Ada*_*kes 5

为了直接回答问题,驱动程序(瘦客户机或OCI)没有这种压缩机制。而且由于发送的数据可能采用某种时髦的二进制格式,因此我不确定它是否可以通过SSL很好地压缩。需要采用其他一些机制来提高网络性能。