从8.0.20版本开始,Connector / J支持X DevAPI连接的数据压缩。
MySQL 8.0现在为X DevAPI连接提供支持的所有压缩算法中,Connector/J仅对Deflate提供开箱即用的支持。这是因为现有的JRE本身不支持其他压缩算法(目前为LZ4和zstd)。为了支持这些算法,客户端应用程序必须分别以an OutputStream和 InputStreamobject 的形式提供相应的deflate和inflate操作的实现 。实现此目的的最简单方法是使用第三方库,例如支持LZ4和zstd的Apache Commons Compress库。
连接选项 xdevapi.compression-algorithm允许用户将Connector / J配置为使用MySQL Server支持的任何压缩算法,只要该算法具有Java实现即可。该选项采用由逗号分隔的三元组列表,每个三元组依次包含以下元素,也以逗号分隔:
压缩算法名称,由服务器使用的标识符指示(请参阅 使用X插件的连接压缩)。
实现接口的类的全限定名称,该接口java.io.InputStream将用于膨胀使用指定算法压缩的数据。
实现接口的类的全限定名称,该接口java.io.OutputStream将用于使用命名算法缩小数据。
这是设置对算法的支持lz4_message并 zstd_stream使用Apache Commons Compress库的示例 :
String connStr = "jdbc:mysql://johndoe:secret@localhost:33060/mydb?"
+ "xdevapi.compression-algorithm="
+ "lz4_message," // LZ4