我正在考虑将MySql compress()函数应用于varchar字段,并且每列往往会从几千个字符运行到一百多个字符。文本几乎是普通的英语,所以我得到了8比1或更好的压缩。由于我有数百万条记录,而且很少想要真正查看数据,因此压缩似乎是一个很好的工程权衡。
我需要在Java中完成大部分处理,并且有很好的zip,gzip和bzip2实现。这很酷。
但我真的很想能够使用标准的MySql客户端来执行查询,例如
选择解压缩(longcolumn)......
所以我希望我的java代码使用相同的,或兼容的压缩算法作为内置函数。我发现的文档说“使用压缩库编译,例如zlib”
这有点模糊,我怎么才能准确知道要使用什么?
===编辑== 要清楚,我希望能够使用“mysql”客户端程序来做调试,所以像这样的事情:
选择解压缩(longcolumn)......
根本不使用Java。但我想使用JDBC进行更新和插入。 主线用法,必须得到压缩博客,然后解压缩。某种包装器或ZipInputStream很好。
答案 0 :(得分: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/