3

我正在考虑将 MySql compress() 函数应用于一个 varchar 字段,并且每列往往从几千个字符运行到超过一百万个字符。文本几乎是普通的英语,所以我得到了 8 比 1 或更好的压缩。由于我有数百万条记录并且很少想要实际查看数据,因此压缩似乎是一个很好的工程权衡。

我需要在 Java 中进行大部分处理,并且 zip、gzip 和 bzip2 有很好的实现。所以这很酷。

但我真的很想能够使用标准的 MySql 客户端进行查询,例如

选择解压缩(长列)其中...

所以我希望我的 java 代码使用与内置函数相同或兼容的压缩算法。我找到的文档说“使用 zlib 等压缩库编译”

这有点模糊,我怎么能确切地知道该使用什么?

===编辑==要清楚,我希望能够使用“mysql”客户端程序进行调试,所以像:

选择解压缩(长列)其中...

根本不使用Java。但我想使用 JDBC 进行更新和插入。而主线使用,得先拿到压缩博客,然后解压。某种包装器或 ZipInputStream 很好。

4

1 回答 1

2

我不确定,但我会尝试用一个包装输出InflaterInputStream()

ResultSet resultSet = statement.executeQuery("SELECT blobfield FROM table");
InputStream stream = new InflaterInputStream(resultSet.getBlob(1).getBinaryStream());

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/zip/InflaterInputStream.html已移至https://docs.oracle.com/javase/7/docs/api/ java/util/zip/InflaterInputStream.html

这篇博文可能对您也很有趣: http ://www.mysqlperformanceblog.com/2012/05/30/data-compression-in-innodb-for-text-and-blob-fields/

于 2012-07-03T00:47:07.927 回答